在 OpenID Connect应用程序中配置单点登录
IBM® Verify使用 OpenID Connect,允许应用程序基于身份验证响应回调对用户进行身份验证。 此外,用户无需在该应用程序中注册账户。 用户将被重定向至 Verify 进行登录。 Verify 会验证用户的身份,通过标识令牌发送信息,并向依赖方确认用户有权访问和使用该资源。 https://<tenant-host>/oauth2/.well-known/openid-configuration该应用程序使用新的 OpenID Connect提供程序,其发现端点为:。
准备工作
- 您必须具有管理许可权,才能完成此任务。
- 请打开至少两个浏览器窗口以完成设置。 Verify 一个用于管理控制台,另一个用于目标应用程序的管理控制台。
- 登录管理控制台 Verify 。
- 使用您的管理员帐户登录目标应用程序管理控制台。
- 您必须在常规选项卡中设置该应用程序实例的基本信息。 请参阅 “设置应用程序基本信息 ”。
关于此任务
Verify在检查应用程序时,请选择 “ OpenID Connect ”模板,以将应用程序配置为“ OpenID Connect”的依赖方,或作为将用户身份验证委托给该服务的客户端应用程序。
配置 Verify 和依赖方以相互进行对话。 要启用 OpenID Connect 单点登录,必须提供以下内容:
- Verify 包含来自依赖方的某些数据。
- 具有来自 Verify 的特定数据的依赖方。
您可以将 IBM Verify Access 和手机应用程序配置为 OpenID Connect 依赖方。
过程
- 转到 “登录 ”选项卡。
- 向 Verify 提供有关依赖方的基本信息。
字段 描述 申请 URL * 用于登录 OpenID Connect 受托方的单点登录初始化地址为 URL。
该应用程序使用此 URL 来请求 Verify 包含用户详细信息的 ID 令牌。
当用户通过 URL 访问该应用程序时,系统会将其重定向至 Verify 进行身份验证。
在站点上配置授权提供者或 OpenID Connect 提供者时,可以从信赖方获取此信息。
授予类型 Verify它指明了依赖方可用于从……检索身份令牌的机制。
OpenID Connect 支持以下类型的资助:- 授权代码
- 隐式
- 设备流
- 客户机凭证
- 授权代码和隐式(混合流程)
- 资源所有者密码凭证 (ROPC)
- 令牌交换
- JWT 持有者
- 基于上下文的授权
必须至少选择一种授权类型。 请参阅 “资助类型 ”部分,快速对比支持的各类资助类型,并确定应为该申请设置哪种资助类型。
响应类型 响应类型用于告知授权服务器所需的授权处理流程。 注意: 当您编辑一个未配置响应类型的现有应用程序时,系统会默认采用已启用授权类型的所有适用响应类型。OpenID Connect 支持以下响应类型:nonecodetokenid_tokencode tokencode id_tokentoken id_tokencode token id_token
如果选择了响应类型
code或none,那么将启用响应方式query。 否则,响应模式query将被清除并禁用。响应方式 响应方式指示授权服务器从授权端点返回结果参数的方式。 OpenID Connect 支持以下响应模式:- 查询
- 片段
- 表单 POST
- 查询 JWT
- JWT 片段
- 表单 POST JWT
客户机标识 这是分配给客户端应用程序的唯一公共标识符,该应用程序即 OpenID Connect的依赖方。 授权服务器使用此信息来识别信赖方和授权请求。
此信息是在您保存 OpenID Connect 应用程序后自动生成的。 在应用程序的管理控制台中将 Verify 配置为 OpenID Connect 提供者时,必须向依赖方提供此信息。
依赖方每次请求访问令牌时,都将使用客户机标识。
公共客户机(无客户机密钥) 指示客户机没有需要由应用程序提供的私钥。
仅当客户机类型是保密时,才生成客户机密钥。 保密客户机可以确保客户机标识和密钥的安全,并且不会向未经授权的参与方显示这些凭证。
客户机私钥必须仅对客户机应用程序和授权服务器已知。
注意: 选择此选项后, 客户端密钥字段将被隐藏。客户机密钥 此数据与客户机标识一起使用,以认证依赖方并交换授权代码以获取标识令牌。
此信息是在您保存 OpenID Connect 应用程序后自动生成的。 在应用程序的管理控制台中将 Verify 配置为 OpenID Connect 提供者时,必须向依赖方提供此信息。
重定向 URI* 它是回调 URL;即,Verify 将其认证响应发送到依赖方的地址。
Verify用户在通过 进行身份验证和授权后,将被重定向至此 URL。
必须至少指定一个 URI。
您最多可以添加 400 个 URI。
在配置授权提供商或 OpenID Connect 提供商时,您可以在其网站上向依赖方获取此信息。
客户机认证方法 验证是否支持以下客户机认证方法:- 缺省值
- 客户机私钥 basic
- 客户机私钥 POST
- 专用密钥 JWT
- 双向 TLS
注: 默认的客户端身份验证方法为 default。如果保留为缺省值,那么同时允许客户机私钥 basic 和 POST。 如果此客户机是公共客户机,那么不允许使用客户机私钥(基础)和 POST。 如果依赖方支持它,请使用专用密钥 JWT 或相互 TLS 作为配置。 有关 Mutual TLS 客户端身份验证的更多信息,请参阅 OpenID ,了解如何将 Mutual TLS 客户端身份验证与基于证书的访问令牌结合使用。
有关客户端密钥 JWT 和私钥 JWT 的更多信息,请参阅 《创建客户端密钥 JWT 和私钥 JWT 》。
验证客户机断言 JTI 指示是否验证了客户机断言 JWT 中的 JTI 进行单次使用。 仅当选择了专用密钥 JWT 客户机认证方法时,才会显示此选项。
客户端断言签名算法* *仅当选择了私钥 JWT 客户端身份验证方法时,才会显示此选项。
TLS 客户机认证属性 这是用于进行认证的证书属性。 仅当选择了相互 TLS 客户机认证方法时,才会显示此选项。 - 主题 DN
- SAN DNS
- SAN URI
- SAN IP
- SAN 电子邮件地址
TLS 客户端身份验证属性值* 这是用于认证的证书中属性的值。 仅当选择了相互 TLS 客户机认证方法时,才会显示此选项。 需要 Proof Key for Code Exchange (PKCE) 验证 PKCE 用于减少授权代码拦截的攻击。 授权代码流程要继续前 PKCE 需要进行代码质询。 此选项仅在选择了授权代码授权流程时才会显示。 需要推送式授权请求 (PAR) PAR 允许客户机通过直接请求将授权请求的有效内容推送到授权服务器,并为它们提供请求 URI,该请求 URI 用作对授权端点的后续调用中的数据的引用。 允许使用访问令牌兑换 SSO 会话 为单点登录(SSO)会话交换访问令牌。 - 允许:访问令牌可用于兑换 SSO 会话。
- 授予和撤销令牌:访问令牌可用于建立单点登录(SSO)会话,但该令牌会被撤销。
- 拒绝:无法将访问令牌兑换为 SSO 会话。
- 默认:OIDC 应用程序的常规设置决定了是否可以使用访问令牌进行单点登录(SSO)会话。
如果您编辑的是现有应用程序,那么可以使用以下客户机密钥选项:- 选择
以查看客户机私钥。
- 选择
以隐藏客户机私钥。
- 点击
将客户端 ID 或密钥复制到剪贴板。
- 点击
以查看已轮换的客户端密钥。
- 从列表中选择一个或多个已轮换的客户端密钥,然后单击 “删除 ”将其删除。
- 选择
以生成新的客户机密钥。 如果您认为客户机密钥被泄露,请使用此选项。 重新生成客户机密钥后,必须在此应用程序的所有 OAuth 客户机中更新客户机密钥。- 选中 “保留当前密钥 ”复选框,即可将当前客户端密钥添加到轮换客户端密钥列表中。
- 如果选中了 “保留当前密钥 ”复选框,请选择客户端密钥的描述和过期时间(以浏览器本地时间为准)。 如果未选择过期时间,则将应用 “应用程序设置 ”中为该租户设置的“轮换密钥生命周期”。
- 轮换后的客户端密钥已进行哈希处理,无法再以明文形式检索,但在选定的过期日期之前仍可继续使用。
- 确认后,客户端密钥将立即进行轮换。 新客户端密钥已显示在屏幕上。
- 配置 JWT 设置。
表 1. JWT 设置 字段 描述 JWKS URI 依赖方以 JSON Web 密钥集 (JWKS) 格式发布其公钥的 URI。 此 URI 将用于 JWT 签名验证或加密。 系统可以拒绝无法访问或无响应的 JWKS URI。 如果 JWKS 大小太大,那么系统也可能拒绝 JWKS URL。 如果依赖方不发布 JWKS URI,那么可通过 X509 证书格式将公用密钥添加到系统。 请参阅“管理证书 ”。 与公用证书关联的“友好名称”是 JWT 的密钥标识 (kid) 头的值。 允许的签名验证密钥 可用于验证客户机断言 JWT 的签名验证密钥标识。 仅当选择了专用密钥 JWT 客户机认证方法时,才会显示此选项。
JWT Bearer 用户标识 仅适用于 JWT Bearer 授权类型。 此配置告知系统如何解释 JWT 不记名主题 (sub) 以标识与此 JWT 不记名令牌相关联的用户。 该子项可以是用户的 ID、那个Username、或者那个External ID。JWT Bearer 默认身份来源 仅适用于 JWT Bearer 授权类型。 如果 JWT 未指定领域,则默认使用 sub 标识的用户所属的身份源领域。 当该 JWT bearer user identification选项设置为User ID时,此设置不适用。 - 配置 Request 对象的设置。
表 2. 请求对象设置 字段 描述 仅请求对象参数 要求所有请求参数都在请求对象中。 签名算法 Verify 期望对请求对象进行签名的算法。 从以下散列算法中选择以验证签名:- RS256
- RS384
- RS512
- PS256
- PS384
- PS512
- ES256
- ES384
- ES512
需要到期声明 要求请求对象包含 expiry 'exp'属性。有效性(秒) 请求对象可以保持有效的最大时间量(以秒计)。 该值通过将请求对象中的过期 'exp'时间减去“不早'nbf'于”时间戳来计算。请求 URI 资源的 URL,该资源包含请求对象。 在授权请求期间,将只允许在此处注册的请求 URI。 - 配置访问令牌和刷新令牌到期时间,以限制在这些令牌被盗时进行未经授权的访问的时间。
访问令牌用于授予对受保护资源的访问权。 访问令牌到期后,会撤销授权。
表 3. 令牌设置 字段 描述 访问令牌到期(秒) 这用于设置访问令牌到期之前的时间长度(以秒计)。
设置访问令牌到期时间以限制攻击者在客户端应用程序受到威胁时可以使用被盗令牌访问资源的时间。
只允许使用正整数。
缺省值为 7200 秒。 允许的最小值为 1 秒,最大值为 2147483647 秒。
访问令牌格式 指定访问令牌的格式。 以下选项可用: - 缺省值
- JWT
受众 指定作为令牌接收方的目标。 这些值会在 JWT 格式令牌的请求aud 中以及内省有效载荷中列出,形式可以是单个字符串或字符串数组。 生成刷新令牌 指示客户端应用程序是否可以请求并使用刷新令牌,从 OpenID Connect 身份提供商的授权服务器获取新的访问令牌。
仅当应用程序计划使用访问令牌通过 Verify API 执行操作时,才应使用此选项。
仅当前一个访问令牌到期时,才需要获取新的访问令牌。
如果“隐式”是您选择的唯一授权类型,那么此选项不重要。
刷新令牌到期时间(秒) 这用于设置刷新令牌到期之前的时间长度(以秒计)。 此设置将确定用户需要重新认证的频率。
设置刷新令牌的过期时间,以确保用户在 Verify 一段时间后重新执行完整的单点登录操作。
仅当启用了生成刷新令牌时,才会显示此选项。
刷新令牌用于获取新的访问令牌以继续访问受保护资源。
只允许使用正整数。
缺省值为 604800 秒。 允许的最小值为 1 秒,最大值为 2147483647 秒。
- 指定标识令牌签名和加密选项。 信赖方使用签名来验证令牌中包含的用户声明的完整性和真实性以及签署令牌的 OpenID Connect 身份提供者。 可以对令牌进行加密,以便只有依赖方才能对其进行解密。
表4。 签名和加密选项 字段 描述 签名算法 Verify 用于对标识令牌进行签名的算法。 该算法必须与依赖方向 Verify 注册的算法匹配。
从以下散列算法中选择以验证签名:- RS256
- PS256
- ES256
- RS384
- PS384
- ES384
- RS512
- PS512
- ES512
注意:- 如果选择了 ES256 签名算法,那么证书必须是具有 P-256 的 ECDSA。
- 如果选择了 ES384 签名算法,那么证书必须是具有 P-384 的 ECDSA。
- 如果选择了 ES512 签名算法,那么证书必须具有 P-521 的 ECDSA。
对证书进行签名 仅当您选择了 RS、ES 或 PS 签名算法的其中任一时,才会显示此选项。
使用此证书可在单点登录期间对标识令牌进行签名。
默认选项指的是您在“安全 > 证书 > 个人证书 ”中配置的默认个人证书。
加密算法 用于加密或确定内容加密密钥值 (CEK) 的加密算法。 支持以下算法:- RSA-OAEP
- RSA-OAEP-256
内容算法 内容加密算法,用于对明文进行认证加密以生成密文和认证标签。 支持以下算法:- A128GCM
- A192GCM
- A256GCM
加密密钥 这是要用于加密的密钥的证书标签或密钥标识。 - 配置所有权证明设置。 如需了解更多信息,请参阅 《证明持有权》( DPoP )。
表5。 “所有权证明”设置 字段 描述 证书绑定的访问令牌 指示生成的令牌是否与证书相关联。 有关证书绑定访问令牌的更多信息, 请参阅 《OpenID Connect 双向 TLS 客户端身份验证与证书绑定访问令牌》。 实施 DPoP 绑定的访问令牌 指示令牌请求是否需要包含 DPoP 标头。 验证 DPoP JWT 的 JTI 表示 DPoP JWT中的JTI是否已验证为一次性使用。 DPoP JWT 的签名算法 DPoP JWT 的预期签名算法。
请从以下算法中选择:
RS256
RS384
RS512
PS256
PS384
PS512
ES256
ES384
ES512
- 指定 JWT 安全授权响应模式 (JARM) 的配置选项。 依赖方使用该签名来验证 JWT 响应中包含的令牌的完整性和真实性。 JWT 还可以进行加密,以确保只有依赖方能够对其进行解密。
表6。 JWT 安全授权响应模式 字段 描述 签名算法 Verify 用于对 JWT 响应进行签名的算法。 该算法必须与依赖方向Verify注册的算法一致。 请从以下哈希算法中选择:- RS256
- PS256
- ES256
- RS384
- PS384
- ES384
- RS512
- PS512
- ES512
注意:- 如果选择了 ES256 签名算法,那么证书必须是具有 P-256 的 ECDSA。
- 如果选择了 ES384 签名算法,那么证书必须是具有 P-384 的 ECDSA。
- 如果选择了 ES512 签名算法,那么证书必须具有 P-521 的 ECDSA。
对证书进行签名 仅当您选择了 RS、ES 或 PS 签名算法的其中任一时,才会显示此选项。 请在单点登录过程中使用此证书对 JWT 响应进行签名。 默认选项指的是您在“安全 > 证书 > 个人证书 ”中配置的默认个人证书。
加密算法 用于加密或确定内容加密密钥值 (CEK) 的加密算法。 支持以下算法:- RSA-OAEP
- RSA-OAPE-256
内容算法 内容加密算法,用于对明文进行认证加密以生成密文和认证标签。 支持以下算法:- A128GCM
- A192GCM
- A256GCM
加密密钥 这是要用于加密的密钥的证书标签或密钥标识。 - 配置令牌交换设置。
表7。 代币交易所 字段 描述 主题令牌 主体令牌的令牌类型,该类型代表了请求该令牌所代表方的身份。 参与者令牌 该参与者令牌的令牌类型,代表被授予已发行令牌访问权限的方的身份。 已请求令牌 作为代币交换的一部分,可以申请生成的代币类型。
事务令牌 :这种一次性安全令牌包含有关特定事务、操作、资源或请求详情的上下文信息,可为该特定操作提供精细化的授权。 选择该令牌后,将显示 “事务上下文 ”磁贴,您可以在其中使用 CELx 表达式设置上下文。 更多详情请参见 “交易令牌 ”。注: 事务令牌是一项可申请的功能, VDEV-186514: 《AI 代理的安全防护》。 如需申请此功能,请联系您的 IBM 销售代表或 IBM 联系人,并表明您希望启用此功能的意愿。 如果您有相应权限,也可以在提交支持工单时注明该功能编号。 IBM Verify 试用订阅用户无法创建支持工单。客户机组 OpenID Connect 客户群列表。 此客户端生成的令牌可在同一组内用作令牌交换的主题令牌。 如果此列表为空,则任何客户端均可使用该客户端生成的令牌作为令牌交换的主题令牌。 需要演员令牌 要求在令牌交换请求中包含主体令牌。 此操作强制执行委托场景,并禁止使用模拟身份的场景。 演员标准 代理标准是可配置的授权规则,用于定义和验证代理关系,从而确定哪些服务或代理可以在何种条件下代表用户采取行动。 更多详情请参阅 “Actor”标准。 事务上下文 只有当 “请求令牌 ”设置为 “交易令牌 ”时 ,“交易上下文 ”字段才会显示。 此字段不适用于其他令牌类型。 更多详情请参见 “交易令牌 ”。 - 配置设备流设置。
表8。 设备流程 字段 描述 生成设备流的 QR 码 指示是否会与用户代码一起生成二维码。 - 为每个端点配置请求映射和响应映射。
- 请为授权端点配置请求和响应映射。
- 同意请求和授权上下文均支持映射功能。 有关这些参数的更多信息,请参阅《 OpenID :同意请求的 Connect 请求映射》和《 OpenID :授权上下文的 Connect 请求映射》。
- 响应映射允许您将参数和标头添加到响应。 请参阅 OpenID ,了解 Connect 的请求与响应映射。
- 配置用于令牌端点的响应映射。
- 响应映射允许您将参数和标头添加到响应。 请参阅 OpenID ,了解 Connect 的请求与响应映射。
- 配置 introspect 映射,以添加和修改由 introspect 端点返回的属性。
- 配置用户信息和 ID 令牌属性映射,以添加和修改端点
userinfo返回的属性以及 ID 令牌中的属性。
- 请为授权端点配置请求和响应映射。
- 选择身份提供商和策略,以确定用户如何访问该应用程序。
- 选择可用于登录此应用程序的身份提供商。默认设置是允许来自该租户已配置的所有企业身份提供商的访问。 若要限制可用于登录该应用程序的身份提供商,请选择 “选择特定的受支持身份提供商 ”。 选中您希望允许其用户登录的身份提供商的复选框。
- 选择用于确定用户可如何访问应用程序的策略。您可以继续使用已分配的默认访问策略。 或者,您可以取消勾选该复选框,然后点击
,从预定义访问策略列表中进行选择。 如需了解更多信息,请参阅 “访问策略 ”。选择访问策略后,请勾选各授权类型的复选框,将其应用于相应的 API 授权类型。
- 选择可用于登录此应用程序的身份提供商。
- 选择是否请求用户同意。可将用户同意请求添加至 OpenID Connect 应用程序。 如果缺省值征求同意保持选中状态,那么系统会提示用户明确同意范围和其他事务信息。 如果选择了不要求同意,那么系统不会收集任何同意,但授权请求将成功。 如果选择了 “仅请求未获批准的同意 ”,系统只会提示用户对尚未获得同意的事项给予同意。
- 限制定制作用域在支持的 OIDC / OAuth 授权流程中, OIDC / OAuth 客户端可以请求自定义范围。 如果启用了缺省设置限制定制作用域,那么在流程结束时授予客户机的作用域将限制为本部分中指定的作用域。 如果禁用了限制定制作用域,那么在流程完成时将授予任何请求的定制作用域。注意: 标准作用域 openid, profile, email, phone, 和 address 无法被限制。
- 请确保已选中 “限制自定义范围 ”复选框。
- 输入您想要授予的定制作用域的名称和描述。作用域名称指的是信赖方/客户机所请求的 OAuth2/OIDC 作用域。 描述是对作用域的通俗解释。这将显示另一个作用域字段集。
- 对于要授予的每个定制作用域重复上一步。
- 授权详情限制在支持的 OIDC/ OAuth 授权流程中,OIDC/ OAuth 客户端可以请求授权详细信息。 如果启用了 “限制授权详细信息 ”选项,则流程结束时授予的授权详细信息将仅限于本节中指定的那些授权详细信息。 如果 “限制授权详情 ”功能已禁用,则在流程完成时,任何请求的授权详情都会被授予。
- 请确保已选中 “限制授权详细信息 ”复选框。
- 请确认 “忽略未知授权信息” 选项是否已启用。
- 输入或选择您要授予的授权详细信息类型的名称。 您可以编辑并定义一条额外的自定义规则,根据授权详细信息 JSON 中的某个属性来过滤请求。 例如,如果授权详细信息类型为
resource_access,且其中包含 属性location,则只有当位置为日本时,该请求才会被允许。requestContext.ad.location == 'Japan'在这种情况下,规则将是:。 - 点击 “添加 ”,并对您希望授予的每种授权详细信息类型重复上述步骤。
- 将 API 权利授予登录令牌。限制 API 访问权是新应用程序的缺省设置。 应用程序无登录令牌权利。 要授予 API 访问权权利,请执行以下步骤。
- 选择“编辑”图标。“编辑 API 客户机”向导将启动。
- 选择要授予登录令牌的用户和非用户权限。如果您选中 “用户令牌的默认权限 ”复选框或取消选中 “限制 API 访问 ”复选框,则会为用户令牌授予一组默认权限。
- 选择 “保存 ”。
- 选择“编辑”图标。
- 选择 “保存 ”。
后续操作
- 向依赖方提供完成 与依赖方之间 VerifyOpenID Connect 登录配置所需的信息 Verify 。 请参阅用户界面中提供的指示信息。
- 添加用户或组权利以允许访问已配置的应用程序。 请参阅“管理应用程序授权”(由管理员或应用程序所有者执行)。
- 在用户登录到已配置的应用程序时,强制实施双因子认证以便对用户增强安全控制。 请参阅 “配置身份验证因素 ”。
- 将 API 客户机添加到此应用程序。 请参阅 “管理 OpenID Connect”和 OpenID Connect for Open Banking 应用程序 API 访问”。
- 配置此应用程序的隐私目的和 EULA。 请参阅 OpenID Connect。