我的 Azure AD B2C 令牌的密钥在哪里?

spo*_*ahn 2 jwt azure-ad-b2c

我正在遵循本指南并使用jwt.io chrome 插件,但我找不到我的密钥,因此我可以手动验证签名。

JWT 标头

{
  "typ": "JWT",
  "alg": "RS256",
  "kid": "c9HOlAkfaBs4YSKZ7RoMnZlKrVzdkXHB2QoLv1fETQ8"
}
Run Code Online (Sandbox Code Playgroud)

ID连接元数据文档使我https://login.microsoftonline.com/common/discovery/v2.0/keys但响应没有这个孩子。

我也参考了这篇博文

小智 11

这个答案已经很旧了,截至 2021 年 10 月的 URL 现在是:

https://<tenantName>.b2clogin.com/<tenantName>.onmicrosoft.com/b2c_1_<policyName>/discovery/v2.0/keys


Sac*_*aca 7

用于检索 Azure AD B2C 租户密钥的 URL 具有以下格式:

https://login.microsoftonline.com/te/<tenantName>.onmicrosoft.com/b2c_1_<policyName>/discovery/v2.0/keys
Run Code Online (Sandbox Code Playgroud)

例如:

https://login.microsoftonline.com/te/fabrikamb2c.onmicrosoft.com/b2c_1_edit_profile/discovery/v2.0/keys

请注意,密钥和 URL 与常规 Azure AD 和 Azure AD 的 v2.0 端点(后者是您在问题中引用的 URL)的密钥和 URL 不同。

此时,所有内置策略(甚至跨租户)的密钥使用相同的密钥,但是在自定义策略的情况下,您会看到每个租户甚至在某些情况下每个策略的不同密钥。

重要说明:鉴于 Azure AD B2C 中的密钥采用不同的格式,您将无法开箱即用地使用 jwt.io 来验证 Azure AD B2C 令牌。请参阅Azure AD B2C - 令牌验证不起作用