Azure JWT 中的 idTokenClaims 和 idToken 有啥区别?
Posted
技术标签:
【中文标题】Azure JWT 中的 idTokenClaims 和 idToken 有啥区别?【英文标题】:What Is The Difference Between idTokenClaims and idToken In Azure JWT?Azure JWT 中的 idTokenClaims 和 idToken 有什么区别? 【发布时间】:2021-03-30 05:51:17 【问题描述】:当我使用 Azure AD 进行身份验证时,我得到一个看起来有点像这样的 JWT:
"logout": "ƒ () ",
"login": "ƒ () ",
"authenticationState": "Authenticated",
"accountInfo":
"account":
"idToken":
"exp": 1111111111,
"nbf": 1111111111,
"ver": "1.0",
"iss": "https://corp.b2clogin.com/1234-hash-abcd/v2.0/",
"sub": "1234-abc-123-1234-1234",
"aud": "1234-abc-123-1234-1234",
"nonce": "1234-abc-123-1234-1234",
"iat": 1111111111,
"auth_time": 1111111111,
"name": "Joe Bloggs",
"extension_Role": "Admin",
"tfp": "B2C_1_signupsignin1"
,
"idTokenClaims":
"exp": 1111111111,
"nbf": 1111111111,
"ver": "1.0",
"iss": "https://corp.b2clogin.com/1234-hash-abcd/v2.0/",
"sub": "1234-abc-123-1234-1234",
"aud": "1234-abc-123-1234-1234",
"nonce": "1234-abc-123-1234-1234",
"iat": 1111111111,
"auth_time": 1111111111,
"name": "Joe Bloggs",
"extension_Role": "Admin",
"tfp": "B2C_1_signupsignin1"
如您所见,idToken
和 idTokenClaims
是相同的。
Azure 发送这两个部分有什么原因吗?
我找不到有关这些部分的任何 Microsoft 文档,以及您是否应该使用其中一个。
我对@987654325@ 和extension_Role
感兴趣。有什么理由让我从一个部分取值而不是另一个部分?
出于我现在的目的,我可以使用其中任何一个。但是,我有兴趣找出这种重复的原因以及推荐使用的解释。
【问题讨论】:
这可能会有所帮助:azuread.github.io/microsoft-authentication-library-for-js/ref/… 【参考方案1】:根据我的理解,它们是相同的。
idToken
应该是作为字符串的 jwt 令牌。但是在您提供的数据中,由于我们不知道的几个原因,它被解码为 json 声明。
idTokenClaims
是从idToken
解码的所有声明(属性)。
所以你可以使用它们中的任何一个,但我建议你使用idTokenClaims
,因为我不确定idToken
下次是否不会被解码(它将是一个 jwt 令牌字符串)。
【讨论】:
以上是关于Azure JWT 中的 idTokenClaims 和 idToken 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用库的情况下验证本机 Javascript 中的 Azure OAuth 访问 JWT 令牌?
Azure AD 令牌中的哪些 JWT 声明可以安全地用于用户映射?
从 ASP.NET Core 中的 azure B2C 应用程序请求 JWT