Azure B2C - JWT签名验证失败

时间:2018-04-22 19:47:54

标签: azure azure-ad-b2c msal

我已设置MSAL从Azure AD B2C获取令牌,设置dotnet核心WebAPI以接受JWT令牌。管理局端点指向WebApi:

 services.AddAuthentication(options =>
        {
            options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
        }).AddJwtBearer(jwtOptions =>
        {
            string tenant = Configuration["AzureAdB2C:Tenant"], policy = Configuration["AzureAdB2C:Policy"], clientId = Configuration["AzureAdB2C:ClientId"];
            jwtOptions.Authority = $"https://login.microsoftonline.com/tfp/{tenant}/{policy}/v2.0/";
            jwtOptions.Audience = clientId;
            jwtOptions.Events = new JwtBearerEvents
            {
                OnAuthenticationFailed = AuthenticationFailed
            };
        });

根据样本。 MSAL配置为使用相同的策略和相同的客户端ID并接收令牌。

MSAL Authority - https://login.microsoftonline.com/tfp/{tenant}.onmicrosoft.com/{policy}/v2.0

但是,AuthFailed事件处理程序只返回
IDX10501: Signature validation failed. Unable to match keys.
并将auth作为401反弹。

我去寻找签名密钥,令牌的kid与发现端点上列出的孩子不同。

https://login.microsoftonline.com/tfp/{tenant}/{policy}/discovery/v2.0/keys

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

Azure Policy SSO Options

似乎我没有选择正确的发卡行申请设置。 MSAL使用https://login.microsoftonline.com/{guid}/v2.0端点抓取其令牌,而WebAPI正在使用https://login.microsoftonline.com/tfp/{guid}/{policy}/v2.0/发行者。

根据docs,这不是一个openid兼容端点,但适用于B2C。请检查两个不同的索赔集!