reactjs - Azure JWT 中的 idTokenClaims 和 idToken 有什么区别?
问题描述
当我使用 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 文档,以及您是否应该使用其中一个。
我对name
和感兴趣extension_Role
。有什么理由让我从一个部分取值而不是另一个部分?
就我现在的目的而言,我可以使用其中任何一个。但是,我有兴趣找出这种重复的原因以及推荐使用的解释。
解决方案
根据我的理解,它们是相同的。
idToken
应该是作为字符串的 jwt 令牌。但是在您提供的数据中,由于我们不知道的几个原因,它被解码为 json 声明。
idTokenClaims
是从 解码的所有声明(属性)idToken
。
所以你可以使用它们中的任何一个,但我建议你使用idTokenClaims
,因为我不确定idToken
下次是否不会被解码(它将是一个 jwt 令牌字符串)。
推荐阅读
- python - 如何为绘图上的连续值添加阴影
- button - QF-TEST:Chrome 中的按钮不可点击
- sql-server - Oracle 通过链接服务器到 SQL Server。从 BST 切换到 GMT 后,带有本地时区字段的时间戳现在会偏移。最好的方法来调整它?
- php - 如何通过命令行将csv文件作为输入传递?
- vue.js - 如何使用 vue-router 在另一个组件中显示组件并在它们之间导航?
- c++ - 关于在用户级线程实现中使用 ucontext.h 的线程切换问题
- sql - 通过给定索引之前的最后一个空格拆分 Oracle SQL 中的字符串
- ios - SwiftUI:使用协议定义视图外观
- solr - 在 DIH 之前更改 Solr shema
- python - 安装 PyGObject 时出错:预处理器命令“mesondefine”无效