不记名令牌在 AAD B2C .NETCorre 中不起作用

Anu*_*adi 2 azure-ad-b2c

我有一个使用 ASP.NET Core 构建的 Web API。我有一个将调用此 API 的 React 应用程序。使用 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); });
Run Code Online (Sandbox Code Playgroud)

我还有以下配置:

 "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"
    }
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么吗?

Anu*_*adi 5

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

  • 实例: 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"]}";
            });
Run Code Online (Sandbox Code Playgroud)