Azure AD B2C 受众验证失败
Posted
技术标签:
【中文标题】Azure AD B2C 受众验证失败【英文标题】:Azure AD B2C Audience validation failed 【发布时间】:2021-12-09 12:36:47 【问题描述】:我正在尝试对 Azure AD B2C 上的 B2C AD 租户进行身份验证。我在 aspnet .NET 6 上使用 OAuth 2.0
如果我使用客户端 ID 请求新的不记名令牌
0fdd4f3b-xxxx-xxxx-xxxx-3f84bd9d02ax
我得到一个 aud 值
https://mysite.onmicrosoft.com/0fdd4f3b-xxxx-xxxx-a438-3f84bd9d02ax
我正在使用
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApi(builder.Configuration.GetSection("AzureAd"));
如果我在我的配置中使用 0fdd4f3b-xxxx-xxxx-a438-3f84bd9d02ax,他会尝试通过在客户端 ID 前加上 api:// 和以下内容来验证它例外:
IDX10214:观众验证失败。观众:'https://mysite.onmicrosoft.com/0fdd4f3b-xxxx-xxxx-a438-3f84bd9d02ax'。不匹配:validationParameters.ValidAudience: 'api://0fdd4f3b-xxxx-xxxx-a438-3f84bd9d02ax'
如果我在配置中使用 https://mysite.onmicrosoft.com/0fdd4f3b-xxxx-xxxx-a438-3f84bd9d02ax,他会尝试通过在客户端 ID 前加上 api:// 和以下异常来验证它:
IDX10214:观众验证失败。观众:'https://mysite.onmicrosoft.com/0fdd4f3b-xxxx-xxxx-a438-3f84bd9d02ax'。不匹配:validationParameters.ValidAudience: 'api://https://mysite.onmicrosoft.com/0fdd4f3b-xxxx-xxxx-a438-3f84bd9d02ax'
为什么值总是以 api:// 为前缀?
【问题讨论】:
这是“常规”Azure AD 至少为 App ID URI 生成的默认值。您应该能够覆盖有效的受众以设置对您有效的受众。 【参考方案1】:好吧,显然 Stack Overflow 是我的橡皮鸭。
如果您的应用程序 ID URI 不以 api:// 开头,您必须手动更改应用程序的清单并切换到访问令牌版本 2。
然后将accessTokenAcceptedVersion的值从null改为2
现在您可以返回本地应用程序配置并将 ClientId 的值设置为 GUID,但不包括 https://xxx.onmicrosoft.com/。
【讨论】:
以上是关于Azure AD B2C 受众验证失败的主要内容,如果未能解决你的问题,请参考以下文章
使用 B2C 生成元数据端点时,id_token_hint 参数签名验证失败
Azure b2c 错误:IDX10501:签名验证失败。无法匹配键:孩子:'gLv****************'
Azure AD - 为啥我无法验证 Azure AD 为我的 Web API 颁发的 JWT 令牌?收到“IDX10516:签名验证失败”错误