各类 Token 规范说明

本文档详细介绍了IDaaS CIAM中的令牌(Token)机制,包括其类型、功能、使用场景及管理方式。通过本文,您将了解如何通过令牌实现安全的身份验证与授权,确保客户数据的安全性和访问控制的高效性。

访问令牌(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 在用户成功登录后会统一返回。

  1. access_token

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

  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",
      "gtp": "password",
      "cookie": "",
      "azp": "",
      "scope": "61a76111efc5d7d37fe62421e475d0b1djM9R1Hkhkn null 17301078373",
      "loginName": "michael_test",
      "customerId": "8674692815791024010",
      "exp": 1632906904,
      "jti": "eWEMG3hVwxth6jGRyhuADA",
      "iat": 1632899705,
      "nbf": 1632899645
    }
  3. 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 均过期时,用户需要重新登录。