本文档详细介绍了IDaaS CIAM中的令牌(Token)机制,包括其类型、功能、使用场景及管理方式。通过本文,您将了解如何通过令牌实现安全的身份验证与授权,确保客户数据的安全性和访问控制的高效性。
访问令牌(Token)概述
IDaaS 提供的所有业务接口都必须携带对应的 access_token 才能请求。未携带 access_token 的请求会提示错误。与 IDaaS 交互的过程中可能会接触到如下类型 token:
应用级: access_token。
用户级:access_token(登录成功后获取)、id_token、refresh_token。
管理级:未上线。
应用级 access_token
用于调用 IDaaS 登录相关接口,包括注册、登录、二次认证、找回密码等。
使用应用的 client_id
和 client_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", "gtp": "password", "cookie": "", "azp": "", "scope": "61a76111efc5d7d37fe62421e475d0b1djM9R1Hkhkn null 17301078373", "loginName": "michael_test", "customerId": "8674692815791024010", "exp": 1632906904, "jti": "eWEMG3hVwxth6jGRyhuADA", "iat": 1632899705, "nbf": 1632899645 }
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 均过期时,用户需要重新登录。