在自定义应用程序中配置 OpenID 单点登录

Verify使用 OpenID Connect 实现单点登录,以便应用程序能够基于由 Connect执行的身份验证来验证其用户的身份。 用户无需向该应用程序注册帐户。 用户将被重定向至 Verify 进行登录。 Verify 验证用户身份,通过身份令牌发送相关信息,并向依赖方确认用户已获授权访问和使用该资源。 https://<tenant-host>/oidc/endpoint/default/.well-known/openid-configuration该应用程序使用 OpenID 连接提供程序,其发现端点为.

准备工作

注: 此任务的替代方案请参见 “动态客户端注册 ”。
  • 您必须具有管理许可权,才能完成此任务。
  • 请打开至少两个浏览器窗口以完成设置。 Verify 一个用于管理控制台,另一个用于目标应用程序的管理控制台。
    • 以管理员身份登录管理控制台 IBM® Verify
    • 使用您的管理员帐户登录到目标应用程序管理控制台。
  • 您必须在 “常规 ”选项卡中设置应用程序实例的基本信息。 请参阅 “设置应用程序基本信息 ”。

关于此任务

Verify 预定义的应用程序模板不提供 “ OpenID Connect ”登录选项。 Verify使用 “自定义应用程序 ”模板配置应用程序,使其作为 OpenID Connect 的受托方客户端应用程序 ,将用户身份验证委托给。

配置 Verify依赖方,使其能够相互通信。 要启用 OpenID Connect 单点登录功能,您必须提供:
  • Verify 并附有依赖方提供的某些数据。
  • Verify依赖方拥有来自.的某些数据。

您可以将 IBM Verify Access 和移动应用程序配置为 OpenID 的受托方

过程

  1. 转到 “登录 ”选项卡。
  2. 在 “登录方式 ”中,选择“ OpenID ”,然后连接“ 1.0 ”。
  3. 提供 Verify 有关依赖方的基本信息。
    字段 描述
    应用程序 URL

    用于登录 OpenID Connect 受托方的单点登录初始化地址为 URL。

    该应用程序使用此 URL 来请求 Verify 包含用户详细信息的 ID 令牌。

    当用户通过 URL 访问该应用程序时,系统会将其重定向至 Verify 进行身份验证。

    在站点上配置授权提供者OpenID Connect 提供者时,可以从信赖方获取此信息。

    授予类型

    Verify它指明了依赖方可用于从……检索身份令牌的机制。

    Verify 支持以下类型的资助:
    • 授权代码
      注意: 授权码已被预设为默认授权类型,且 PKCE 也已默认选中。
    • 隐式
    • 设备流
      注意: 如果您选择“设备流”,还可以生成二维码。
    • 基于上下文的授权
    • JWT 持有者
      注意: 如果您选择 JWT Bearer,则可以配置 JWKS URIJWT bearer user identificationJWT bearer default identity source。 有关如何使用 JWT 承载者授权类型的更多信息,请参阅 “授权类型 ”。
    • 授权代码、隐式、设备流以及 ROPC 的任意组合。

    必须至少选择一种授权类型。 如果 ROPC 是所选择的唯一授权类型,那么将不会显示访问策略部分。 请参阅 “资助类型 ”部分,快速对比支持的各类资助类型,并确定应为该申请设置哪种资助类型。

    客户机标识

    这是分配给客户端应用程序的唯一公共标识符,该应用程序即 OpenID Connect 的依赖方。 授权服务器使用此信息来识别信赖方和授权请求。

    在您保存自定义的 OpenID Connect 应用程序后,系统会自动生成此信息。 当在应用程序管理控制台中的将 Verify 配置为 OpenID Connect 提供者时,必须将此信息提供给依赖方

    信赖方在每次请求访问令牌时都使用客户机标识。

    Kubernetes 密钥 Kubernetes 私钥 YAML 文件用于与 Red Hat OpenShift 进行连接。 您必须下载 Kubernetes 私钥 YAML 文件以获取元数据。
    公共客户机(无客户机密钥)

    指示客户机没有需要由应用程序提供的密钥。

    注意: 选中此项后 ,“客户端密钥 ”字段将被隐藏,且以下算法将从 “签名算法 ”选项中移除:
    • HS256
    • HS384
    • HS512

    仅当客户机类型是保密时,才生成客户机密钥。 保密客户机可以确保客户机标识和密钥的安全,并且不会向未经授权的参与方显示这些凭证。

    客户机密钥必须仅对客户机应用程序授权服务器公开。

    客户机密钥

    此数据与客户机标识一起用于认证信赖方以及将授权代码交换为标识令牌。

    在您保存自定义的 OpenID Connect 应用程序后,系统会自动生成此信息。 当在应用程序管理控制台中的将 Verify 配置为 OpenID Connect 提供者时,必须将此信息提供给依赖方

    客户机认证方法

    指示端点(例如,需要客户机认证的令牌端点)的认证方法。

    验证是否支持以下客户机认证方法:
    • 缺省值
    • 客户机私钥 basic
    • 客户机私钥 POST
    • 客户机私钥 JWT
    • 专用密钥 JWT

    如果保留为缺省值,那么同时允许客户机私钥 basic 和 POST。 如果信赖方支持,请使用专用密钥 JWT 作为配置。

    有关客户端密钥 JWT 和私钥 JWT 的更多信息,请参阅 《创建客户端密钥 JWT 和私钥 JWT 》。

    验证客户机断言 JTI

    指示是否验证了客户机断言 JWT 中的 JTI 进行单次使用。 仅当选择了客户机私钥 JWT 或专用密钥 JWT 客户机认证方法时,才会显示此选项。

    允许的签名验证密钥

    可用于验证客户机断言 JWT 的签名验证密钥标识。 仅当选择了专用密钥 JWT 客户机认证方法时,才会显示此选项。

    需要 Proof Key for Code Exchange (PKCE) 验证 PKCE 用于减少授权代码拦截的攻击。 授权代码流程要继续前 PKCE 需要进行代码质询。 此选项仅在选择了授权代码授权流程时才会显示。
    重定向 URI

    这是回调地址 URL;该地址用于 Verify 将身份验证响应发送给依赖方。

    Verify用户在通过 进行身份验证和授权后,将被重定向至此 URL。

    必须至少指定一个 URI。 如果回调 URI 是应用程序的域,就可以是租户的域。
    注意: 域名可以使用通配符。 虽然 URI 路径不支持通配符,但“*”字符是有效的 URI 路径字符,并将被视为字面字符串。

    您最多可以添加 400 个 URI。

    在站点上配置授权提供者OpenID Connect 提供者时,可以从信赖方获取此信息。
    JWKS URI 依赖方以 JSON Web 密钥 (JWKs) 格式发布其公用密钥的 URI。 此 URI 用于 JWT 签名验证。 系统可以拒绝无法访问或无响应的 JWKS URI。 如果 JWKS 大小太大,那么系统也可能拒绝 JWKS URL。 如果依赖方不发布 JWKS URI,那么可通过 X509 证书格式将公用密钥添加到系统。 请参阅 “管理证书”。 与公用证书关联的“友好名称”是 JWT 的密钥标识 (kid) 头的值。
    JWT 持有者用户标识

    仅可用于 JWT 不记名授权类型。

    此配置告知系统如何解释 JWT 不记名主题 (sub) 以标识与此 JWT 不记名令牌相关联的用户。 该子命令可以是 User IDUsernameExternal ID
    JWT 持有者缺省身份源

    仅可用于 JWT 不记名授权类型。

    如果 JWT 未指定域,那么这是 sub 标识的用户所属的缺省身份源域。 如果将 JWT bearer user identification 选项设置为 User ID,那么此设置不适用。
    如果您编辑的是现有应用程序,那么可以使用以下客户机密钥选项:
    • 选择 显示 以查看客户机私钥。
    • 选择 隐藏 以隐藏客户机私钥。
    • 点击 复制 将客户端 ID 或密钥复制到剪贴板。
    • 点击 列表 以查看已轮换的客户端密钥。
      • 从列表中选择一个或多个已轮换的客户端密钥,然后单击 “删除 ”将其删除。
    • 选择 重新生成 以生成新的客户机密钥。 如果您认为客户机密钥被泄露,请使用此选项。 重新生成客户机密钥后,必须在此应用程序的所有 OAuth 客户机中更新客户机密钥。
      • 选中 “保留当前密钥 ”复选框,即可将当前客户端密钥添加到轮换客户端密钥列表中。
      • 如果选中了 “保留当前密钥 ”复选框,请选择客户端密钥的描述和过期时间(以浏览器本地时间为准)。 如果未选择过期时间,则将应用 “应用程序设置 ”中为该租户设置的“轮换密钥生命周期”。
      • 轮换后的客户端密钥已进行哈希处理,无法再以明文形式检索,但在选定的过期日期之前仍可继续使用。
      • 确认后,客户端密钥将立即进行轮换。 新客户端密钥已显示在屏幕上。
  4. 配置访问令牌和刷新令牌到期时间,以限制在这些令牌被盗时进行未经授权的访问的时间。

    访问令牌用于授予对受保护资源的访问权。 访问令牌到期后,会撤销授权。

    表 1. 令牌设置
    字段 描述
    访问令牌到期(秒)

    这用于设置访问令牌到期之前的时间长度(以秒计)。

    设置访问令牌到期时间,以限制攻击者在客户机应用程序受到损害时可以使用被盗令牌访问资源的时间。

    只允许使用正整数。

    缺省值为 7200 秒。 允许的最小值为 1 秒,最大值为 2147483647 秒。

    访问令牌格式 指示访问令牌是否以不透明字符串的形式生成,即Default设置,或以 JWT 格式。
    受众 指定作为令牌接收方的目标。 这些值列示在 JWT 格式的令牌的 aud 声明中,以及作为单个字符串或字符串数组的自省有效内容中。
    自省属性映射 此属性映射列表用于包括自省有效内容和 JWT 格式访问令牌中的声明。
    属性名称 Verify依赖方使用的属性名称,以及其要求从.获取的属性名称。 aud以下属性名称不可使用:, exp, groupIds, groupUids at_hash, c_hash, rt_hash, s_hash, iat, iss, nonce,sub ,, client_id, grant_id, grant_type 和 scope
    属性

    列出了您在 “目录 > 属性 ”中为每种类型定义的所有属性来源。

    所选属性源的值指定为标识令牌中定义的信赖方属性名称的属性值。

    生成刷新令牌

    指示客户端应用程序是否可以请求并使用刷新令牌 ,从 OpenID Connect身份提供商的授权服务器获取新的访问令牌

    仅当应用程序计划使用访问令牌通过 Verify API 执行操作时,才应使用此选项。

    仅当前一个访问令牌到期时,才需要获取新的访问令牌。

    如果选择“隐式”作为授权类型,那么此选项不相关。

    刷新令牌到期时间(秒)

    这用于设置刷新令牌到期之前的时间长度(以秒计)。 此设置确定用户可以重新认证的频率。

    设置刷新令牌的过期时间,以确保用户在 Verify 一段时间后重新执行完整的单点登录操作。

    仅当启用了生成刷新令牌时,才会显示此选项。

    刷新令牌用于获取新的访问令牌以继续访问受保护资源。

    只允许使用正整数。

    缺省值为 604800 秒。 允许的最小值为 1 秒,最大值为 2147483647 秒。

    更新刷新令牌生命周期 此选项指示在使用刷新令牌获取一组新令牌时是否更新刷新令牌生命周期。 选中此复选框时,在刷新令牌每次刷新后,将更新刷新令牌到期时间设置的生命周期。 如果未选中此复选框,那么在达到原始刷新令牌到期时间时,更新的刷新令牌到期。
  5. 指定 ID 令牌的签名和加密选项。 依赖方使用该签名来验证令牌中所包含的用户声明的完整性和真实性,以及签署该令牌的 OpenID Connect身份提供商的真实性。 可以对令牌进行加密,以便只有依赖方才能对其进行解密。
    表 2. 签名和加密选项
    字段 描述
    签名算法

    用于对 Verify ID令牌进行签名的算法。 Verify该算法必须与依赖方注册时所使用的算法一致。

    从以下散列算法中选择以验证签名:
    • HS256
    • HS384
    • HS512
    • ES256
    • ES384
    • ES512
    • PS256
    • PS384
    • PS512
    • RS256(缺省值)
    • RS384
    • RS512
    注意:
    • 如果选择了 ES256 签名算法,那么证书必须是具有 P-256 的 ECDSA。
    • 如果选择了 ES384 签名算法,那么证书必须是具有 P-384 的 ECDSA。
    • 如果选择了 ES512 签名算法,那么证书必须具有 P-521 的 ECDSA。
    • 选择不生成客户机密钥时,不会显示 HS 算法。
    对证书进行签名

    仅当已选择任何 RS、ES 或 PS 签名算法之后,才会显示此选项。

    使用此证书可在单点登录期间对标识令牌进行签名。

    默认选项指的是您在“安全 > 证书 > 个人证书 ”中配置的默认个人证书。

    加密算法 用于加密或确定内容加密密钥值 (CEK) 的加密算法。
    支持以下算法:
    • RSA-OAEP
    • RSA-OAEP-256
    内容算法 内容加密算法,用于对明文进行认证加密以生成密文和认证标签。
    支持以下算法:
    • A128GCM
    • A192GCM
    • A256GCM
    加密密钥 这是要用于加密的密钥的证书标签或密钥标识。
  6. 列出该服务 Verify 通过身份令牌依赖方支持和提供的用户属性。
    Verify 可能会扩展标准的 JSON 声明模式,以包含员工角色、 主管和部门等额外属性。
    userType注意: 以下属性默认已添加到 ID 令牌中:, uniqueSecurityName, displayName, realmName, name, preferred_username, jti at_hash,, ext。可以通过将这些属性映射到配置为不返回任何值的属性源,从而将其从 ID 令牌中移除。
    “属性映射 ”部分包含以下元素,具体说明见表3
    • 一个复选框选项,用于发送所有已知用户属性。
    • Verify可选功能:在.中添加属性名称及其对应的属性来源。
    表 3. 属性映射
    信息 描述
    在标识令牌中发送所有已知用户属性

    选中此选项后, OpenID Connect 提供程序身份来源中所有已知的用户凭据属性都会自动包含在 ID 令牌中。

    已知用户证书属性包含:
    标准属性
    目录 > 属性云目录这些属性来自 ,其中包含在 Verify 中显示的内置属性。
    扩展的属性
    这些属性来自您在 身份验证 > 身份提供商”中配置的 SAML 企业版身份提供商。

    未选择此选项时,仅定义信赖方标识令牌中所需的特定属性。 指定属性名称和属性源。

    属性名称 Verify依赖方 属性所使用并要求从 获取的属性名称。aud以下属性名称不可使用:, exp, groupIds, groupUids at_hash, c_hash, rt_hash, s_hash, iat, iss, nonce,, client_id, grant_id, grant_type 以及 scope。 如果属性名称为 sub,则此属性映射会修改内省响应、JWT 访问令牌、用户信息响应和 ID 令牌中 sub 的值。
    属性

    列出了您在 “目录 > 属性 ”中为每种类型定义的所有属性源。

    所选属性源的值指定为标识令牌中定义的信赖方属性名称的属性值。

    注意: 如果属性源值显示为“未标记”,则说明该属性的用途已发生变更。 使用此属性的现有应用程序可继续使用此应用程序,直到您重新映射应用程序以将其他属性用于此用途。 例如,如果对现有属性清除了单点登录 (SSO) 复选框,那么已针对 SSO 使用此属性的应用程序可继续将其用于 SSO。 除去供应用途时,此行为也适用于供应属性。
  7. 选择用于确定用户如何访问应用程序的身份源和策略。
    1. 选择可用于登录到此应用程序的身份源。

      缺省设置是允许从针对租户配置的所有企业身份源进行访问。 要限制可用于登录到应用程序的身份源,请选择选择特定受支持的身份源。 选择要允许从其登录的身份源的复选框。

    2. 选择用于确定用户可如何访问应用程序的策略。
      您可以继续使用分配的缺省访问策略,即允许从所有设备访问。 或者,您可以取消勾选该复选框,然后点击 按钮 编辑 ,从预定义访问策略列表中进行选择。 选择访问策略后,您可以通过勾选各授权类型的复选框,将该访问策略应用于相应的 API 授权类型。 如需了解更多信息,请参阅 “访问策略 ”。
  8. 选择是否请求用户同意。
    可以将对用户同意的请求添加到 Open ID Connect 应用程序中。 用户同意可用于除“资源所有者密码凭证 (ROPC)”之外的所有授权类型。 如果 ROPC 是为应用程序选择的唯一授权类型,那么将隐藏用户同意选项。 如果请求同意在缺省情况下处于选中状态,那么系统将提示用户明确同意作用域和 API 访问权利。 用户可以授予或拒绝 API 访问权限。 现有 Open ID Connect 应用程序没有请求同意。 如果想要请求用户同意,必须编辑这些应用程序。 请参阅 “管理应用程序权限 ”。

    创建应用程序后,将在请求同意下显示字段同意类型以及值高级高级值指示用户同意存储在 DPCM 中。 较旧的 OIDC 定制应用程序在将其同意迁移到 DPCM 后显示此字段。

  9. 可选: 限制自定义范围。
    OIDC/OAuth 客户机可以在支持的 OIDC/OAuth 授权流程中请求定制作用域。 如果启用了缺省设置限制定制作用域,那么在流程结束时授予客户机的作用域将限制为本部分中指定的作用域。 如果禁用了限制定制作用域,那么在流程完成时将授予任何请求的定制作用域。
    注意: 标准作用域 openid, profile, email, phone, 和 address 无法被限制。
    1. 请确保已选中 “限制自定义范围 ”复选框。
    2. 输入您想要授予的定制作用域的名称和描述。
      作用域名称指的是信赖方/客户机所请求的 OAuth2/OIDC 作用域。 描述是对作用域的通俗解释。
      这将显示另一个作用域字段集。
    3. 对于要授予的每个定制作用域重复上一步。
  10. 可选: 向登录令牌授予 API 权限。
    限制 API 访问权是新应用程序的缺省设置。 应用程序无登录令牌权利。 要授予 API 访问权权利,请执行以下步骤。
    1. 选择“编辑”图标。
      “编辑 API 客户机”向导将启动。
    2. 选择要授予登录令牌的用户和非用户许可权。
      如果您选中 “为用户令牌设置默认权限 ”复选框或取消选中 “限制 API 访问 ”复选框,系统将为用户令牌授予一组默认权限。
    3. 选择 “保存 ”。
  11. 选择 “保存 ”。

后续操作

  • 依赖方提供完成 OpenID Connect 登录配置所需的信息, Verify 该配置用于连接与依赖方之间 Verify 。 请参阅用户界面中提供的指示信息。
  • 添加用户或组权利以允许访问已配置的应用程序。 参阅“管理应用程序权限(由管理员或应用程序所有者执行)”。
  • 在用户登录到已配置的应用程序时,强制实施双因子认证以便对用户增强安全控制。 请参阅 “配置身份验证因素 ”。