首页 > 解决方案 > 如何配置 JwtBearerOptions 以在众所周知的 openid-configuration URL 中包含策略名称?

问题描述

我正在尝试向我的 ASP.NET Web 应用程序添加一些不记名令牌验证。我正在使用内置的 JWT 身份验证代码,配置为使用以下代码...

services.AddAuthentication(ConfigureAuthentication).AddJwtBearer(ConfigureJwt);

它运行以下功能...

private void ConfigureAuthentication(AuthenticationOptions options)
{
    options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
}

private void ConfigureJwt(JwtBearerOptions options)
{
    var directoryId = Configuration["AzureAd:DirectoryId"];
    var directoryName = Configuration["AzureAd:DirectoryName"];
    var policy = Configuration["AzureAd:SigninPolicyName"];

    options.Audience = Configuration["AzureAd:ApplicationId"];
    options.Authority = $"https://{directoryName}.b2clogin.com/{directoryName}.onmicrosoft.com/v2.0";
}

ConfigureJwt方法是我正在处理的方法。我似乎无法获取底层 JWT 代码以openid-configuration从适当的 URL 获取。它非常接近,但缺少 URL 中的策略。这是我上面的代码生成并尝试openid-configuration从...中获取的内容

https://example-directory.b2clogin.com/example-directory.onmicrosoft.com/v2.0/.well-known/openid-configuration

这是从 Azure 门户中指定的应该从中获取配置的内容...

https://example-directory.b2clogin.com/example-directory.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=B2C_1_SignInPolicy

如您所见,我上面的代码缺少策略名称。

我似乎无法弄清楚如何在任何地方指定它。有人知道如何配置JwtBearerOptions以使其包含此策略名称吗?

标签: azureazure-ad-b2c

解决方案


我认为当局需要:

https://{directoryName}.b2clogin.com/{directoryName}.onmicrosoft.com/B2C_1A_signup_signin/v2.0

B2C_1A_signup_signin替换为您的策略 ID。

它包含策略 ID,它将从正确的位置下载元数据。


推荐阅读