要配置 SSO,您必须首先创建一个 OAuth 2.0/OpenID Connect 配置文件。随后,您必须将用户配置为使用配置文件。下文将指导您完成 OAuth 2.0/OpenID Connect 配置文件的创建。

Vault 允许创建多个配置文件,并将它们分别关联到不同的授权服务器 (AS)。这样,用户即可向他们所属的安全策略中配置的任何 AS 进行身份验证。请注意,Vault 只支持将 OpenID Connect 与 PingFederate、ADFS 4.0 和 Okta 授权服务器结合使用。

请了解有关 Vault 产品的受支持 IdP/AS 的更多信息。

要创建 OAuth 2.0/OpenID Connect 配置文件:

  1. 转到管理 > 设置 > OAuth 2.0/OpenID Connect 配置文件
  2. 单击创建
  3. 为配置文件输入一个标签名称
  4. 为配置文件选择一个状态。最好的做法是让配置文件保持非活动状态,直到配置完成。
  5. 可选:为配置文件添加一个描述。
  6. OAuth 2.0/OpenID Connect 配置下方,使用上传 AS 元数据按钮上传您的 AS 元数据。请参阅以下详细信息。
  7. 从下拉列表中选择授权服务器提供方。从 20R2.2 开始,ADFS/Azure AD 选项分为两个选项:ADFSAzure AD。ADFS 将此值显示为 ADFS,而 Azure AD 将此值显示为 Azure
  8. 可选:如果您在上一步中选择了 ADFS,则您可以选择首选身份验证库。默认值是 MSAL(ADFS 2019 或更高版本)。我们建议对于 ADFS 2019 或更高版本选择 MSAL,其他情况选择 ADAL。Vault 文件管理器使用此设置在运行时加载适当的 Microsoft 身份验证库。选择错误的选项可能会阻碍在 IDP 侧使用高级配置选项,例如自定义声明。
  9. 可选:输入一个访问令牌 JWKS 终结点。只有当您在上一步中选择 PingFederate 时,此选项才可用。此字段有 500 个字符的限制。请参阅以下详细信息。
  10. 选择一个身份声明。选择身份处于 sub 声明中,以允许 AS 默认在 id_token 或 access_token 的 sub 声明中提供唯一的用户标识符。如果选择身份处于另一个声明中,请在声明字段中输入替代声明键。此字段有 100 个字符的限制。请参阅以下详细信息。
  11. 选择一个用户 ID 类型Vault 用户名联合 ID。请参阅以下详细信息。
  12. 可选:选中执行严格受众限制验证复选框,以启用受众限制验证。请参阅以下详细信息。
  13. 可选:在客户端应用程序下方,单击添加并填写必填字段,以设置授权服务器与客户端应用程序之间的客户端 ID 映射。请参阅以下详细信息。
  14. 单击保存

关于 PingFederate 授权服务器

当您从授权服务器提供方下拉列表中选择 PingFederate 时,Vault 会显示可选的访问令牌 JWKS 终结点字段。此字段接受 HTTPS URL 格式的授权服务器 JSON Web 密钥集 (JWKS) 字符串,Vault 将使用它为 access_tokens 获取签名验证密钥。此终结点是对 AS 元数据中指定的 JWKS 终结点的补充,Vault 使用后者来验证 id_tokens 上的签名。

上传身份验证服务器元数据

您可以上传一个 AS 元数据 JSON 文件或者指定数据所在的 URL,以上传身份验证服务器元数据。请注意,如果更改了您的 AS 元数据,您需要将更新后的 AS 元数据导入到 Vault OAuth/OpenID Connect 配置文件中。

要上传 AS 元数据:

  1. 单击上传 AS 元数据按钮
  2. 要通过上传一个 JSON 文件来导入 AS 元数据,请选择授权服务器元数据,然后选择一个文件。
  3. 要通过指定一个 URL 来导入 AS 元数据,请选择提供授权服务器元数据 URL,然后输入此文件的位置。此 URL 必须使用 HTTPS 协议。
  4. 单击继续。Vault 会验证 AS 元数据 JSON 的内容,如果这些信息无效,将返回一条错误消息。
  5. 要完成配置,请单击保存

JSON 文件结构是在 AS 元数据规格中定义的。

需要使用以下元数据:

元数据描述
发布方授权服务器的发布方标识符,它是一个使用 https 方案而且没有任何查询或片段组件的 URL。
authorization_endpoint授权服务器的授权终结点的 URL。
token_endpoint授权服务器的令牌终结点的 URL。
introspection_endpoint授权服务器的 OAuth 2.0 自省终结点的 URL。如果您将授权服务器提供方设置为 ADFS,则无需使用此元数据。
jwks_uri授权服务器的 JSON Web 密钥集 (JWKS) 的 URL。这包含一组公钥,用于验证由授权服务器发布的 JSON Web 令牌 (JWT)。请注意,当选择 PingFederate 作为授权服务器提供方时,您可以指定一个用于验证 access_tokens 的额外 JWKS 终结点。

您可以包含任何其他的可选元数据。以下元数据是可选的,但建议使用这些元数据:

元数据描述
scopes_supportedJSON 数组,包含此授权服务器支持的一组 OAuth 2.0 [RFC6749] 范围值。即使使用了此参数,服务器也可能选择不公布所支持的某些范围值。

身份声明

Id_tokenaccess_token 内的身份声明包含已进行身份验证的用户的标识符。授权服务器通常会提供一个值,此值可唯一识别 sub(受试者)声明中已进行身份验证的用户。不过,Vault 允许您在 id_token(s) 或者 access_token(s) 内设置一个替代声明,以获取用户的标识符。

关于用户 ID 类型

用于“用户 ID 类型”的两个选项分别是 Vault 用户名联合 ID

Vault 用户名

如果您计划将 Vault 用户名存储为 IdP 用户目录中的一个属性,或者 Vault 用户名恰好与您的企业用户名完全匹配,请选择 Vault 用户名。从根本上说,这样会由 IdP 负责处理将企业用户名映射到 Vault 用户名的工作。

联合 ID

如果您计划将企业用户名存储在 Vault 用户配置文件上的联合 ID 字段中,请选择联合 ID。这样会由 Vault 负责处理将企业用户名映射到 Vault 用户名的工作。

客户端 ID 映射

客户端 ID 映射功能允许 Vault 管理授权服务器定义的 Oauth 客户端 ID 与客户端应用程序中定义的客户端 ID 之间的映射。这样,具有内置静态客户端 ID 的 Vault 应用程序(例如 Vault 文件管理器Veeva Snap)即可与授权服务器集成,在这些授权服务器中,必须为每个应用程序生成唯一的客户端 ID。

添加客户端应用程序

要添加新的客户端应用程序:

  1. 单击客户端应用程序节段下方的添加按钮。
  2. 为应用程序输入一个应用程序标签
  3. 输入一个应用程序客户端 ID
  4. 输入一个授权服务器客户端 ID
  5. 可选:输入受众值。只有当启用了受众限制验证时,此字段才适用。
  6. 单击确定

编辑客户端应用程序

要编辑一个现有的客户端应用程序,请将鼠标光标悬停在应用程序标签上,然后单击操作菜单中的编辑。使用编辑菜单,您可以为应用程序更新必填字段。您也可以从操作菜单中选择删除,以删除一个客户端应用程序。

受众和客户端 ID 验证

在 Oauth 令牌验证过程中,Vault 使用受众限制验证来确保由授权服务器生成并由客户端应用程序显示的令牌能够用于特定的 OAuth 2.0/OpenID Connect 配置文件。只有当令牌能够供与 Vault 进行通信的客户端应用程序使用时,令牌才会通过验证。

要启用受众验证,请从 OAuth 2.0/OpenID Connect 配置文件页面中选中执行严格受众限制验证复选框。

受众限制验证的工作原理

令牌内的 aud(受众)声明会指定令牌的预期接收人。当一个 OAuth 2.0/OpenID Connect 配置文件收到一个令牌时,Vault 会从 JWT(JSON Web 令牌)或令牌自省响应读取受众信息。强烈建议授权服务器将 aud 值设置为 id_token 中的客户端 ID 以及 access_token 中的资源服务器 URI。在 Vault 中,资源服务器 URI 对于每个 OAuth 2.0/OpenID Connect 配置文件都是唯一的,并作为创建配置文件的那个 Vault 会话 ID URL 公布。

根据向 Vault 显示的用于身份验证的是 id_token 还是 access_token,Vault 会使用 Vault 会话 ID URL 或者客户端应用程序映射表中指定的一个受众值来验证受众限制。

在受众限制验证过程中,Vault 执行以下验证步骤:

  1. 检查令牌中是否存在 aud 声明。如果缺失此声明,Vault 将拒绝该令牌。
  2. 将 OAuth 2.0/OpenID Connect 配置文件中接收请求的 Vault 会话 ID URL 与从令牌中的 aud 声明提取的值进行比较。如果这两个值不匹配,Vault 会继续对照客户端应用程序映射表中指定的受众值来验证受众限制。
  3. 读取客户端 ID,并将其从 HTTP 请求或者令牌中的 client_id 声明中提取。如果缺失此客户端 ID,Vault 将拒绝该令牌。
  4. 在 OAuth 2.0/OpenID Connect 配置文件中,尝试根据在上一步中获取的客户端 ID,在客户端应用程序映射表中找到一个映射记录。Vault 会提取此受众值映射记录。如果没有任何基于此客户端 ID 的匹配映射记录,Vault 将拒绝该令牌。
  5. 最后,Vault 会将受众值与发送到令牌中的 aud 声明中的值进行比较。如果映射记录中没有任何受众值,或者来自映射记录的值与令牌中的值不匹配,Vault 将拒绝该令牌。

OAuth 2.0/OpenID Connect 事件日志记录和故障排除

域管理员可以捕获 OAuth 2.0/OpenID Connect 身份验证事件,以通过 OAuth 2.0/OpenID Connect 配置文件页面中的故障排除标签页,排查潜在的身份验证或配置问题。每个捕获操作都会记录最多十 (10) 个身份验证请求的事件。

日志保留

在执行每个新的捕获操作之前,Vault 会清除已捕获的事件日志。管理员可以手动清除已捕获的事件日志,但前提是当前并未执行捕获操作。

请注意,在“登录审计历史记录”日志中,Vault 不会再显示已失败的一般 OAuth/OpenID Connect 身份验证尝试的详细信息。Vault 会在域审计历史记录日志中记录启动和停止捕获的操作。

捕获身份验证事件

要捕获 OAuth/OpenID Connect 身份验证事件:

  1. 从“OAuth 2.0/OpenID Connect 配置文件”页面中,单击故障排除标签页。
  2. 可选:从用户字段中,选择要为其捕获事件日志的用户。如果不选择一个用户,Vault 将捕获所有用户的事件。
  3. 可选:在客户端 ID 字段中,输入一个客户端 ID。如果不提供一个客户端 ID,Vault 将捕获所有客户端 ID 的事件。
  4. 单击开始捕获按钮,以开始执行捕获过程。如果配置文件中包含来自上一个捕获的事件,Vault 将在开始新的捕获之前移除现有的所有事件,并显示一个对话框以确认您希望继续。Vault 会在“事件”表中记录已捕获的任何事件。
  5. 可选:单击刷新按钮,以刷新“事件”表的内容。

停止捕获事件

要停止捕获事件,请单击结束捕获按钮,并在该对话框中确认您希望继续。

关于事件表

Vault 会在事件表中显示已捕获的任何事件,并包含以下列:

  • 日期 (UTC):请求的 UTC 日期和时间。
  • 事务 ID:事件的事务 ID。对于每个身份验证请求,事务 ID 都是唯一的。
  • 消息:事件描述。
  • 用户:与已捕获的事件关联的用户名。
  • 客户端:与已捕获的事件关联的客户端 ID。
  • 事件数据:身份验证事件用来执行验证的数据。此列仅供作为一个 CSV 文件下载。您无法将此列添加到事件表中。
  • 验证状态:事件验证结果,如果验证成功,则为良好

删除已捕获的事件

要删除所有已捕获的事件,请从操作菜单中选择全部删除。单击对话框中的,以确认此操作。您无法撤销此操作。

导出为 CSV

事件表的操作菜单中,您可以选择导出到 CSV。导出的 CSV 文件将包含所有已捕获的事件以及事件数据列,但此列在事件表中并不存在。