【问题标题】:Bearer Token not working in AAD B2C .NETCorre不记名令牌在 AAD B2C .NETCorre 中不起作用
【发布时间】:2021-06-03 13:46:03
【问题描述】:

我有一个使用 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); });

我也有如下配置:

 "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"
    }

我在这里做错了吗?

【问题讨论】:

  • 报告了什么错误?
  • 它没有报告错误,我的用户 claimprincipal 只是显示为空。但是,我使用另一种方法解决了这个问题。在这里发布答案。

标签: azure-ad-b2c


【解决方案1】:

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

  • 实例: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"]}";
            });

【讨论】:

    猜你喜欢
    • 2015-08-01
    • 2019-04-07
    • 2019-04-11
    • 2019-05-28
    • 2018-02-01
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多