尝试使用ADFS认证应用程序的令牌获取



我被一个问题困住了,我想不出办法来,我在网上到处搜索答案,但无济于事。问题是:我通常在asp.net应用程序中嵌入PowerBI报表。我遵循微软的教程。我们在其中注册了一个azureAD应用程序作为服务主体。我们使用Microsoft.Identity.Web库来验证我们的用户,以及验证作为访问PowerBI报告的应用程序的服务主体。

builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd"))
.EnableTokenAcquisitionToCallDownstreamApi()
.AddInMemoryTokenCaches();
builder.Services.AddScoped(typeof(PowerBiServiceApi));

现在的问题是,我正在构建一个应用程序,它不与Microsoft.Identity.Web进行身份验证,但实际上将使用个人帐户/ADFS和联邦服务对用户进行身份验证。

问题是我无法通过作为应用程序的服务主体进行身份验证来进行令牌获取。

.AddOpenIdConnect(options =>
{
options.ClientId = "xxxxx-xxxxx-xxx-xxx-xxxxxx";
options.Authority = "https://xxxxxxxxxxx";
options.SignedOutRedirectUri = "https://localhost:xxxx/";
options.Events = new OpenIdConnectEvents
{
OnRemoteFailure = OnAuthenticationFailed,
};
})
.AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd"))
.EnableTokenAcquisitionToCallDownstreamApi()
.AddInMemoryTokenCaches();

然而,当我无法运行这个应用程序和嵌入成功。我的主要问题是:是否可以使用一个身份验证提供者(通过openID或wsFederation的ADFS联合服务)对我的用户进行身份验证?同时也在使用微软。标识进行令牌获取

到目前为止,我已经成功地使用OpenIDConnect直接与ADFS和MSAL库获得令牌(也来自ADFS)下游api。对于使用客户端秘密的ADFS条目(即服务器应用程序),我将使用IConfidentialClientApplicationBuilder,而本地应用程序将使用IPublicClientApplicaationBuilder

这意味着我不需要也不能使用这段代码:.AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd")) .EnableTokenAcquisitionToCallDownstreamApi() .AddInMemoryTokenCaches();

最新更新