文档

各类 Token 规范说明

IDaaS 提供的所有业务接口都必须携带对应的 access_token 才能请求。未携带 access_token 的请求会提示错误。

与 IDaaS 交互的过程中可能会接触到如下类型 token:

  • 应用级 access_token

  • 用户级

  • access_token,登录成功后

  • id_token

  • refresh_token

  • 管理级 (未上线)

应用级 access_token

用于调用 IDaaS 登录相关接口,包括注册、登录、二次认证、找回密码等。

使用应用的 client_idclient_secret,通过 OAuth 2.0 client_credentials 客户端模式从 IDaaS 获取。

默认有效时长 2 小时。过期请重新获取,暂不支持刷新或有效时长变更。

用户级 access_token、id_token 和 refresh_token

这三种 token 在用户成功登录后会统一返回。

access_token

用于调用后续 IDaaS 提供的用户自服务接口,包括修改手机号、账号注销等。token 默认 2 小时有效,可以在应用创建时指定,亦可配置修改。

id_token

用于身份验证。只有当登录时传递 response_type 参数为 token id_token 时才会返回。

未来 CIAM 将会允许使用 id_token 实现跨域单点登录。除此外,id_token 还会包含当前已登录用户的最基本信息,可以直接获取使用,避免额外接口请求。

id_token 采用 JWT 格式。可以在 https://jwt.io/ 网站中预览 id_token 内容。

id_token 中的 payload 参数参考如下:

{
  "sub": "61a76111efc5d7d37fe62421e475d0b1djM9R1Hkhkn", // token 所识别用户的唯一标识
  "gtp": "password",
  "cookie": "",
  "azp": "",
  "scope": "61a76111efc5d7d37fe62421e475d0b1djM9R1Hkhkn null 17301078373",
  "loginName": "michael_test", // 登录使用的用户名
  "customerId": "8674692815791024010",//外部ID 
  "exp": 1632906904, // token 失效时间,单位秒
  "jti": "eWEMG3hVwxth6jGRyhuADA", // jwt token id,token 唯一标识
  "iat": 1632899705, // issued at,创建时间参数,单位秒
  "nbf": 1632899645 // not before,token 不应比 nbf 时间更早使用
}

refresh_token

用于刷新 access_token。id_token 不受影响。

出于安全性考虑 access_token 的有效时间一般较短,通常为 2 小时,但若每两个小时要用户重新登录,体验太差。refresh_token 提供了折中解决方案。

refresh_token 和 access_token 会同时返回,但 refresh_token 的有效期较长,默认为 30 天。在 refresh_token 有效期范围内,可以使用 refresh_token 调用 token 刷新接口获取新的 access_token 使用。避免用户被迫反复登录。

access_token 和 refresh_token 均过期时,用户需要重新登录。

  • 本页导读 (0)
文档反馈