Authing 文档文档
快速开始
概念
使用指南
开发集成 arrow
  • V2 文档
  • V3 文档
应用集成
加入 APN
开发集成
多租户(内测版)
控制台文档
多租户控制台
租户控制台
Saas 应用 Demo
快速开始
概念
使用指南
开发集成 arrow
  • V2 文档
  • V3 文档
应用集成
加入 APN
开发集成
多租户(内测版)
控制台文档
多租户控制台
租户控制台
Saas 应用 Demo
旧版
概念
  • 什么是 Authing
  • 什么是用户池
  • 什么是应用
  • 什么是认证
  • 什么是联邦认证
  • 什么是零信任网络
  • 单点登录与单点登出
  • 什么是授权
  • 认证 vs 授权
  • 什么是 JWT Token
  • 什么是 ID Token
  • 什么是 Access Token
  • 什么是 Refresh Token
  • Access Token vs Id Token
  • 理解 OIDC 与 OAuth2.0 协议

  • OIDC 常见问题
  • 理解 SAML2 协议

  • 什么是多因素认证
  • 账号生命周期管理
  • 托管登录页 vs 可嵌入登录组件
  • CIAM 与 EIAM
  • 什么是 LDAP
  • 扫码登录的原理
  • 密码学基本概念
  1. 概念
  2. /
  3. Access Token vs Id Token

¶ Access Token vs Id Token

更新时间: 2022-11-10 20:12:02
编辑

与身份相关的 Token 有两种:Access Token 和 Id Token。

¶ Access Token

Access Token 的格式可以是 JWT (opens new window) 也可以是一个随机字符串。应当携带 Access Token 访问受保护的 API 接口,API 接口应该检验 Access Token 中的 scope 权限项目决定是否返回资源。例如,有一个应用使用了谷歌登录,然后同步用户的日历信息,谷歌会返回 Access Token 给应用。当应用希望读写用户的日历数据时,应用需要携带返回的 Access Token 访问谷歌的 日历 API。

绝对不要使用 Access Token 做认证。Access Token 本身不能标识用户是否已经认证。

Access Token 中只包含了用户 id,在 sub 字段。在你开发的应用中,应该将 Access Token 视为一个随机字符串,不要试图从中解析信息。

Access Token 内容示例:

{
  "jti": "YEeiX17iDgNwHGmAapjSQ",
  "sub": "601ad46d0a3d171f611164ce", // subject 的缩写,为用户 ID
  "iat": 1612415013,
  "exp": 1613624613,
  "scope": "openid profile offline_access",
  "iss": "https://yelexin-test1.authing.cn/oidc",
  "aud": "601ad382d02a2ba94cf996c4" // audience 的缩写,为应用 ID
}

注意 Access Token 不包含除 id 之外的任何用户信息。包含 scope 权限项目,用于调用受保护的 API 接口。所以 Access Token 用于调用接口,而不是用作用户认证。

在很多场景下,你希望通过 Access Token 获取更多的用户信息,可以携带 Access Token 调用 Authing 的用户信息端点(自建应用 应用配置 标签页 认证配置 模块)来获取完整的用户信息。

¶ Id Token

Id Token 的格式为 JWT (opens new window)。Id Token 仅适用于认证场景。例如,有一个应用使用了谷歌登录,然后同步用户的日历信息,谷歌会返回 Id Token 给这个应用,Id Token 中包含用户的基本信息(用户名、头像等)。应用可以解析 Id Token 然后利用其中的信息,展示用户名和头像。

在使用 Id Token 之前应该先验证合法性。

不推荐使用 Id Token 来进行 API 的访问鉴权。

每个 Id Token 的受众(aud 参数)是发起认证授权请求的应用的 ID(或编程访问账号的 AK)。

Id Token 中的内容示例:

{
  "sub": "601ad46d0a3d171f611164ce", // subject 的缩写,为用户 ID
  "birthdate": null,
  "family_name": null,
  "gender": "U",
  "given_name": null,
  "locale": null,
  "middle_name": null,
  "name": null,
  "nickname": null,
  "picture": "https://files.authing.co/authing-console/default-user-avatar.png",
  "preferred_username": null,
  "profile": null,
  "updated_at": "2021-02-04T05:02:25.932Z",
  "website": null,
  "zoneinfo": null,
  "at_hash": "xnpHKuO1peDcJzbB8xBe4w",
  "aud": "601ad382d02a2ba94cf996c4", // audience 的缩写,为应用 ID
  "exp": 1613624613,
  "iat": 1612415013,
  "iss": "https://oidc1.authing.cn/oidc"
}
上一篇: 什么是 Refresh Token 下一篇: OIDC 与 OAuth2.0 综述
  • Access Token
  • Id Token

用户身份管理

集成第三方登录
手机号闪验 (opens new window)
通用登录表单组件
自定义认证流程

企业内部管理

单点登录
多因素认证
权限管理

开发者

开发文档
框架集成
博客 (opens new window)
GitHub (opens new window)
社区用户中心 (opens new window)

公司

400 888 2106
sales@authing.cn
北京市朝阳区北辰世纪中心 B 座 16 层(总)
成都市高新区天府五街 200 号 1 号楼 B 区 4 楼 406 室(分)

京ICP备19051205号

beian京公网安备 11010802035968号

© 北京蒸汽记忆科技有限公司