授权类型
Verify授权类型指客户端用于从...获取身份令牌和访问令牌的授权机制。 您可以选择授权码、 隐式授权、授权码与隐式授权组合、 设备流、 资源所有者凭据、 JWT、 基于上下文的授权、 刷新令牌以及令牌交换。
请参阅下表以了解支持的授权类型的比较,并确定要为应用程序设置的授权类型。
| 特征 | 预授权代码 | 授权代码 | 隐式 | 授权代码和隐式 |
|---|---|---|---|---|
| 描述 | /preauth 预授权端点会返回预授权码。 预授权码被兑换为访问令牌。 /token必须进行客户端身份验证,才能从令牌端点交换访问令牌。 |
授权端点 需要进行客户机认证,方法是使用客户机标识和密钥来从令牌端点 这是最常用的流程。 |
授权端点 它不使用授权代码或令牌端点 |
它允许客户机前端和后端相互独立地接收令牌。 客户机从授权端点 |
| 用例 | 用于以下凭证签发场景:
|
用于此类客户机:它们可以安全地维护客户机密钥(例如 Web 应用程序)和本机移动应用程序。 其目的是对用户和客户端进行身份验证。 |
用于此类客户机:它们无法保存客户机密钥,例如,基于浏览器或基于 JavaScript 的应用程序。 旨在认证用户。 |
用于此类客户机:
|
| 响应类型值 | 不适用 |
|
|
|
| 从授权端点返回所有令牌。 | 不适用 | 否 | 是 | 否 |
| 从令牌端点返回所有令牌。 | 是 | 是 | 否 | 否 |
| 不向用户代理显示令牌。 | 是 | 是 | 否 | 否 |
| 可以认证客户机应用程序。 | 是 | 是 | 否 | 是 |
| 生成刷新令牌。 | 是 | 是 | 否 | 是 |
| 来回通信 | 否 | 否 | 是 | 否 |
| 多数通信服务器到服务器 | 是 | 是 | 否 | 可变 |
| 登录提示 (login_hint) | 否 | 是 john@ibm.com该值可以是字符串形式的用户名(例如),也可以是 JSON 格式(例如),. 使用 JSON 值时,域表示身份源域。 |
是 john@ibm.com该值可以是字符串形式的用户名(例如),也可以是 JSON 格式(例如),. 使用 JSON 值时,域表示身份源域。 |
是 john@ibm.com该值可以是字符串形式的用户名(例如),也可以是 JSON 格式(例如),. 使用 JSON 值时,域表示身份源域。 |
| 最长认证年限 (max_age) | 不适用 | 此值是自上次用户活动认证以后允许的耗用时间(以秒为单位)。 此属性仅适用于云目录登录会话。 | 此值是自上次用户活动认证以后允许的耗用时间(以秒为单位)。 此属性仅适用于云目录登录会话。 | 此值是自上次用户活动认证以后允许的耗用时间(以秒为单位)。 此属性仅适用于云目录登录会话。 |
| 工作流程 |
|
|
|
|
| 特征 | 设备流 | 资源所有者密码凭证 | JWT |
|---|---|---|---|
| 描述 | 它允许使用 QR 码或发送到 URL 的用户代码对客户机进行授权。 | 需要进行客户机认证和用户认证,方法是使用客户机标识、客户机密钥、用户名和密码从令牌端点/令牌来检索访问令牌和标识令牌。 用户名和密码将根据 Cloud Directory 进行验证。 | 在 RFC7523 中进行定义。 允许客户机提供签名、加密或签名且加密的 JWT 以交换授权。 JWT 由授权服务器进行验证,JWT 中的身份用作授权的主题。 |
| 用例 | 用于此类客户机:
|
仅当没有其他流程可用时,才可以启用此授权类型。 可将其用于:
|
授权服务器 (Verify) 与签发 JWT 的实体之间已建立信任关系。 客户机从发出实体的 JWT 获取 JWT,并将其提供给授权服务器以交换授权。 发出实体的 JWT 可能具有其自己的需求,必须在发出 JWT 前满足这些需求(例如,替代认证和授权检查)。 |
| 响应类型值 | 不适用 | 不适用 | 不适用 |
| 从授权端点返回所有令牌。 | 否 | 否 | 否 |
| 从令牌端点返回所有令牌。 | 是 | 是 | 是 |
| 不向用户代理显示令牌。 | 是 | 是 | 是 |
| 可以认证客户机应用程序。 | 是 | 是 | 是 |
| 生成刷新令牌。 | 是 | 是 | 是 |
| 来回通信 | |||
| 多数通信服务器到服务器 | |||
| 登录提示 (login_hint) | 否 | 否 | 否 |
| 最长认证年限 (max_age) | 不适用 | ||
| 工作流程 |
|
|
|
| 特征 | 基于上下文的授权 | 刷新令牌 | 令牌交换 |
|---|---|---|---|
| 描述 | API 驱动的流,在其中执行其他认证和授权检查。 在向客户机发出授权之前,可能需要多因子认证。 | 必须通过客户端 ID、客户端密钥和刷新令牌进行客户端和用户身份验证,以便从令牌端点 /token 获取一组新的访问令牌、身份令牌和刷新令牌。 刷新令牌必须属于同一个客户端 ID。 在此流程中,与该令牌关联的属性值不会被刷新。 | 定义在 RFC8693 中。 允许客户端提交一个令牌,以换取另一个令牌。 |
| 用例 |
|
使用此授权类型可获取一组新的访问令牌,并延长令牌的有效期。 这样既能保持访问令牌的有效期较短,又无需用户重新登录以获取新的访问令牌。 |
|
| 响应类型值 | 不适用 | 不适用 | 不适用 |
| 从授权端点返回所有令牌。 | 否 | 否 | 否 |
| 从令牌端点返回所有令牌。 | 是 | 是 | 是 |
| 不向用户代理显示令牌。 | 是 | 是 | 是 |
| 可以认证客户机应用程序。 | 是 | 是 | 是 |
| 生成刷新令牌。 | 是 | 是 | 是 |
| 来回通信 | 是 | ||
| 多数通信服务器到服务器 | 是 | ||
| 登录提示 (login_hint) | 否 | 否 | 否 |
| 最长认证年限 (max_age) | 不适用 | 否 | |
| 工作流程 |
注意:
|
|
|