Azure Active Directory JWT 公钥更改

2024-01-13

Azure AD 随机更改 JWT 公共令牌而不发出警告。我可以完全关闭该功能吗?我希望公钥永远不会改变。


Azure AD 签名密钥会定期轮换,有时也会立即轮换。

请查看相关的微软指南:Azure Active Directory 中的签名密钥滚动更新 https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-signing-key-rollover

出于安全目的,Azure AD 的签名密钥定期滚动 基础上,在紧急情况下,可以延期 立即地。任何与 Azure AD 集成的应用程序都应该 准备好处理按键翻转事件,无论其频率如何 可能发生。如果没有,并且您的应用程序尝试使用 用于验证令牌签名、登录请求的过期密钥 将失败。

在你的问题中你提到"Am I able to turn the functionality off completely? I would like the public key to never change.".

您无法控制此行为,如上面的文档中所述。您的应用程序需要经过设计才能处理这种密钥轮换。

您始终可以使用 OpenID Connect 发现文档获取最新的签名密钥。寻找jwks_uri value.

您也可以使用通用端点来获取该信息或租户特定的端点。

Azure AD V1 common endpoint - https://login.microsoftonline.com/common/.well-known/openid-configuration    
Azure AD V2 common endpoint - https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration 

签名密钥可以在类似的 URL 中找到

Azure AD V1 - https://login.microsoftonline.com/common/discovery/keys     
Azure AD V2 - https://login.microsoftonline.com/common/discovery/v2.0/keys

同样,您也可以使用租户特定端点,例如

https://login.microsoftonline.com/mytenant.onmicrosoft.com/discovery/keys
https://login.microsoftonline.com/mytenant.onmicrosoft.com/discovery/v2.0/keys

The kid此处找到的密钥值将与用于签署您收到的令牌的密钥的标识符匹配。您可以在令牌标头中检查这一点。例子:

{
  "typ": "JWT",
  "alg": "RS256",
  "x5t": "iBjL1Rcqzhiy4fpxIxdZqohM2Yk",
  "kid": "iBjL1Rcqzhiy4fpxIxdZqohM2Yk"
}

顺便说一句——

  1. 如果您计划缓存某些密钥,您的应用程序将需要定期检查更新,如果出现故障,请根据需要转到上面的端点以获取新密钥。此 Microsoft 文档介绍验证签名 https://learn.microsoft.com/en-us/azure/active-directory/develop/access-tokens#validating-the-signature提到

    检查所使用的公钥更新的合理频率 Azure AD 每 24 小时一次。

  2. 很多时候,甚至不需要显式验证令牌,因为 Azure AD 中间件具有验证访问令牌的内置功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure Active Directory JWT 公钥更改 的相关文章

随机推荐