承载令牌在AAD B2C . net core中不工作



我有一个使用ASP构建的Web API。净的核心。我有一个React应用会调用这个API。使用AAD B2C管理身份。我遇到了一个问题,由应用程序生成的承载令牌不被API识别。

我确信这与我的设置有关,因为令牌本身具有我需要的所有声明(由JWT.io解码)。然而,当我通过。net Core中的代码传递它以允许授权时,ClaimsIdentity没有任何内容,也不包含任何用户信息。

我正在使用以下代码行设置实例:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApi(options =>
{
configuration.Bind("AzureAdClient", options);
options.TokenValidationParameters.NameClaimType = "name";
}, options => { configuration.Bind("AzureAdClient", options); });

我也有以下配置:

"AzureAdClient": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "somename.onmicrosoft.com",
"ClientId": "guid here",
"TenantId": "guid here",
"Audience": "https://somename.onmicrosoft.com/tenants-api",
"SignUpSignInPolicyId": "B2C_1_RwSignIn"
}

我在这里做错了什么吗?

我可以使用不同的策略来解决这个问题。大多数示例中推荐的配置仍然不起作用。

  • 实例:https://yourname.b2clogin.com
  • 域:yourname.onmicrosoft.com
  • SignUpSignInPolicyId:实际的名称您的注册/登录策略
  • ClientId: API客户端的客户端Id。
var section = configuration.GetSection("AzureAdClient");
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(options =>
{
options.Authority = $"{section["Instance"]}/{section["Domain"]}/{section["SignUpSignInPolicyId"]}/v2.0/";
options.Audience = $"{section["ClientId"]}";
});

最新更新