授权类型

授权类型 指示客户机用于从 Verify检索标识令牌和访问令牌的授权机制。 您可以从 授权代码隐式授权代码和隐式设备流资源所有者凭证JWT基于上下文的授权刷新令牌令牌交换中进行选择。

请参阅下表以了解支持的授权类型的比较,并确定要为应用程序设置的授权类型。
表 1. 资助类型
特征 授权代码 隐式 授权代码和隐式
描述

授权端点 /authorize 返回授权代码。 然后,可以使用授权代码交换标识令牌、访问令牌或刷新令牌。

需要进行客户机认证,方法是使用客户机标识和密钥来从令牌端点 /token 检索标识令牌或访问令牌。

这是最常用的流程。

授权端点 /authorize 直接返回标识令牌或访问令牌。

它不使用授权代码或令牌端点 /token

它允许客户机前端和后端相互独立地接收令牌。

客户机从授权端点 /authorize 获取授权代码和令牌。 某些令牌是从令牌端点 /token 请求的。

用例

用于此类客户机:它们可以安全地维护客户机密钥(例如 Web 应用程序)和本机移动应用程序。

它旨在对用户和客户机进行认证。

用于此类客户机:它们无法保存客户机密钥,例如,基于浏览器或基于 JavaScript 的应用程序。

旨在认证用户。

用于此类客户机
  • 可安全地维护客户机密钥(例如 Web 应用程序)和本机移动应用程序。
  • 需要立即访问标识令牌以获取身份信息。
  • 需要通过使用刷新令牌获取有效期更长的令牌。
响应类型值
code
id_token
token
id_token token
code id_token
code token
code id_token token
从授权端点返回所有令牌。
从令牌端点返回所有令牌。
不向用户代理显示令牌。
可以认证客户机应用程序。
生成刷新令牌。
来回通信
多数通信服务器到服务器 可变
登录提示 (login_hint)
此值可以是作为字符串(例如, john@ibm.com 或 JSON)的用户名,例如,
{"realm":"securityVerifyRealm",
"username":"john@ibm.com"}
. 使用 JSON 值时,域表示身份源域。
此值可以是作为字符串(例如, john@ibm.com 或 JSON)的用户名,例如,
{"realm":"securityVerifyRealm",
"username":"john@ibm.com"}
. 使用 JSON 值时,域表示身份源域。
此值可以是作为字符串(例如, john@ibm.com 或 JSON)的用户名,例如,
{"realm":"securityVerifyRealm",
"username":"john@ibm.com"}
. 使用 JSON 值时,域表示身份源域。
最长认证年限 (max_age) 此值是自上次用户活动认证以后允许的耗用时间(以秒为单位)。 此属性仅适用于云目录登录会话。 此值是自上次用户活动认证以后允许的耗用时间(以秒为单位)。 此属性仅适用于云目录登录会话。 此值是自上次用户活动认证以后允许的耗用时间(以秒为单位)。 此属性仅适用于云目录登录会话。
工作流程
  1. 客户机准备一个包含必需请求参数的认证请求。
  2. 客户机将请求发送到 Verify 授权服务器。
  3. Verify 授权服务器对用户进行认证。
  4. Verify 授权服务器获取用户同意或授权。
  5. Verify 授权服务器使用授权代码将用户发送回客户机。
  6. 客户机通过使用令牌端点处的授权代码来请求认证响应。
  7. 客户机接收到响应,响应主体中包含标识令牌和访问令牌。
  8. 客户机验证标识令牌并检索用户的主体标识。
  1. 客户机准备一个包含必需请求参数的认证请求。
  2. 客户机将请求发送到 Verify 授权服务器。
  3. Verify 授权服务器对用户进行认证。
  4. Verify 授权服务器获取用户同意或授权。
  5. Verify 授权服务器使用标识令牌以及 (如果请求) 访问令牌将用户发送回客户机。
  6. 客户机验证标识令牌并检索用户的主体标识。
  1. 客户机准备一个包含必需请求参数的认证请求。
  2. 客户机将请求发送到 Verify 授权服务器。
  3. Verify 授权服务器对用户进行认证。
  4. Verify 授权服务器获取用户同意或授权。
  5. Verify 授权服务器使用授权代码并根据响应类型,一个或多个参数将用户发送回客户机。
  6. 客户机通过使用令牌端点处的授权代码来请求响应。
  7. 客户机接收到响应,响应主体中包含标识令牌和访问令牌。
  8. 客户机验证标识令牌并检索用户的主体标识。
表 2. 资助类型续
特征 设备流 资源所有者密码凭证 JWT
描述 它允许使用 QR 码或发送到 URL 的用户代码对客户机进行授权。 需要进行客户机认证和用户认证,方法是使用客户机标识、客户机密钥、用户名和密码从令牌端点/令牌来检索访问令牌和标识令牌。 用户名和密码将根据 Cloud Directory 进行验证。 在 RFC7523 中进行定义。 允许客户机提供签名、加密或签名且加密的 JWT 以交换授权。 JWT 由授权服务器进行验证,JWT 中的身份用作授权的主题。
用例
用于此类客户机
  • 缺少用于执行基于用户代理的 OAuth 流的浏览器。
  • 输入约束到需要用户输入大量文本的程度是不可行的。
例如,智能电视、媒体控制台、数字图片框和打印机。
仅当没有其他流程可用时,才可以启用此授权类型。 可将其用于:
  • 与客户机有信任关系的资源所有者,例如设备操作系统或高度权限的应用程序。
  • 通过使用交互式表单可获取资源所有者凭证(用户名和密码)的客户机。
  • 通过将存储的凭证转换为访问令牌,将使用定向认证方案(如 HTTP Basic 或 Digest 认证)的现有客户机迁移到 OAuth。
授权服务器 (Verify) 与发出 JWT 的实体之间存在已建立的信任关系。 客户机从发出实体的 JWT 获取 JWT,并将其提供给授权服务器以交换授权。 发出实体的 JWT 可能具有其自己的需求,必须在发出 JWT 前满足这些需求(例如,替代认证和授权检查)。
响应类型值 不适用 不适用 不适用
从授权端点返回所有令牌。
从令牌端点返回所有令牌。
不向用户代理显示令牌。
可以认证客户机应用程序。
生成刷新令牌。
来回通信
多数通信服务器到服务器
登录提示 (login_hint)
最长认证年限 (max_age) 不适用
工作流程
  1. 用户通过从设备发送客户标识来启动流程,请求用户代码和设备代码。
  2. 如果客户机标识有效,那么将返回验证 URI,用户代码和设备代码。
  3. 设备会显示用于输入浏览器的验证 URI 和用户代码,或者显示以供用户扫描的 QR 码。
  4. 设备不断尝试交换令牌的设备代码。
  5. 用户将手动扫描或键入验证 URI 和用户代码,以将用户代码发送到 OIDC 服务。
  6. 如果用户代码有效,那么将发送成功消息,设备代码将交换成访问令牌。
  1. 用户在信赖方的表单上输入其用户名和密码。
  2. 客户机将用户名、密码、客户机标识以及客户机密钥发送到令牌端点。
  3. 根据 Cloud Directory 来验证用户名和密码。
  4. 客户机将接收到一个响应,其主体中包含了标识令牌和访问令牌。
  1. 客户机获取 JWT(通过任意外部方式)并将其提供给端点。
  2. 验证 JWT,并抽取主题和其他属性。
  3. 客户机接收到响应,响应主体中包含标识令牌和访问令牌。
表 3. 资助类型续
特征 基于上下文的授权 刷新令牌 令牌交换
描述 API 驱动的流,在其中执行其他认证和授权检查。 在向客户机发出授权之前,可能需要多因子认证。 通过使用客户机标识,客户机密钥和刷新令牌从令牌端点/令牌检索一组新的访问令牌,标识令牌和刷新令牌,需要客户机和用户认证。 刷新令牌必须属于同一客户机标识。 在此流期间,不会刷新与令牌关联的属性值。 在 RFC8693中定义。 允许客户机提供要与另一个令牌交换的令牌。
用例
  • 必须检测客户机以处理来自授权服务器的质询类型响应。

  • 客户机使用 Verify 中可用的认证因子 API 来接收 JWT ,然后显示该 JWT 以继续流。
  • 客户机必须通过“context”参数在请求中包含其他上下文信息。
使用此授权类型以获取具有更新的令牌生存期的一组全新访问令牌。 这允许访问令牌生存期保持较短,但不会要求用户再次登录以获取新的访问令牌。
  • 模拟: 让客户机作为另一个实体获取对资源的访问权。

  • 委派: 让客户代表授权实体执行操作。

响应类型值 不适用 不适用 不适用
从授权端点返回所有令牌。
从令牌端点返回所有令牌。
不向用户代理显示令牌。
可以认证客户机应用程序。
生成刷新令牌。
来回通信
多数通信服务器到服务器
登录提示 (login_hint)
最长认证年限 (max_age) 不适用
工作流程
  1. 客户机通过使用 grant_type=Context-based authorization 向请求提供一些 ` context ` 来启动流
  2. 客户机接收 DENY(如果在此上下文中不允许访问)或 CHALLENGE(通过返回的作用域标识)。
  3. 客户机使用与质询响应一起返回的访问令牌来访问可用的认证因子 API,包含标志以请求 JWT 作为完成因子结果。
  4. 将从已完成的因子返回的 JWT 作为发出的 JWT 持有者授权请求(还必须包含上下文)和令牌呈现回 /token
注意:
  • 根据配置的策略,在执行第一个因子后,可能需要其他因子。 这些因子可能需要执行第二个 CHALLENGE 和第二个认证因子。
  • 此授权类型需要编写定制访问策略并将其附加到应用程序。 此访问策略必须包含第一个因子认证规则以及(可选)任何 2FA 需求。
  1. 客户机确定访问令牌即将到期或已到期,并希望获取访问令牌。
  2. 客户机将客户机凭证和刷新令牌发送到令牌端点。
  3. 将验证刷新令牌和客户机凭证。
  4. 客户机接收响应,该响应包含响应主体中的标识令牌,刷新令牌和访问令牌。
  1. 客户机生成或检索要用作主题令牌的令牌。 (可选) 它还将具有参与者令牌。

  2. 使用主体令牌和 (可选) 参与者令牌向授权服务器的令牌端点发送请求。

  3. 授权服务器返回请求的令牌。