9.5. OpenID Connect v1.0 身份提供程序


红帽根据 OpenID Connect 协议构建 Keycloak 代理身份提供程序。这些身份提供程序(IDP)必须支持规格中定义的 授权代码流 来验证用户和授权访问权限。

流程

  1. 单击菜单中的 Identity Providers
  2. Add provider 列表中,选择 OpenID Connect v1.0

    添加身份提供程序

    Add Identity Provider

  3. 输入您的初始配置选项。有关配置选项的更多信息,请参阅 常规 IDP 配置

    Expand
    表 9.2. OpenID 连接配置
    Configuration描述

    授权 URL

    OIDC 协议所需的授权 URL 端点。

    令牌 URL

    OIDC 协议所需的令牌 URL 端点。

    注销 URL

    OIDC 协议中的注销 URL 端点。这个值是可选的。

    Backchannel Logout

    对 IDP 的背景、带外的 REST 请求以注销用户。有些 IDP 仅通过浏览器重定向执行注销,因为它们可能会识别使用浏览器 Cookie 的会话。

    用户信息 URL

    OIDC 协议定义的端点。此端点指向用户配置文件信息。

    客户端身份验证

    定义红帽构建 Keycloak 与授权代码流相关的客户端验证方法。如果使用私钥签名的 JWT,Red Hat build of Keycloak 会使用 realm 私钥。在其他情况下,定义一个客户端 secret。如需更多信息,请参阅 客户端身份验证规格

    客户端 ID

    用作外部 IDP 的 OIDC 客户端的域。如果您使用授权代码流与外部 IDP 交互,则域必须具有 OIDC 客户端 ID。

    Client Secret

    来自外部 密码库的客户端机密。如果您使用授权代码流,则需要此 secret。

    客户端断言签名算法

    为客户端身份验证创建 JWT 断言的签名算法。如果是使用私钥或客户端 secret 作为 jwt 签名的 JWT,则需要它。如果没有指定算法,则会调整以下算法。在使用私钥签名的 JWT 时,RS256 会被调整。当 Client secret 为 jwt 时,HS256 会被调整。

    Issuer

    红帽构建的 Keycloak 会在来自 IDP 的响应中根据这个值验证签发者声明。

    默认范围

    OIDC 范围列表,红帽构建的 Keycloak 使用身份验证请求发送。默认值为 openid。每个范围分开有一个空格。

    提示

    OIDC 规格中的 prompt 参数。通过此参数,您可以强制重新验证和其他选项。如需了解更多详细信息,请参阅规格。

    接受来自客户端的 prompt=none 转发

    指定 IDP 接受包含 prompt=none 查询参数的身份验证请求。如果域收到带有 prompt=none 的 auth 请求,则 realm 会检查用户当前是否已验证,并在用户尚未登录时返回 login_required 错误。当红帽构建的 Keycloak 为身份验证请求决定默认 IDP (使用 kc_idp_hint 查询参数或域具有默认 IDP)时,您可以将 prompt=none 的身份验证请求转发到默认的 IDP。默认 IDP 检查用户的身份验证。因为并非所有 IDP 都支持使用 prompt=none 的请求,所以红帽构建的 Keycloak 会使用这个切换来指示默认 IDP 在重定向身份验证请求前支持该参数。

    如果用户在 IDP 中未经身份验证的,客户端仍然会收到 login_required 错误。如果用户在 IDP 中是真实的,如果红帽构建的 Keycloak 必须显示需要用户交互的身份验证页面,客户端仍然可以收到 interaction_required 错误。此身份验证包括必要的操作(例如,密码更改)、同意屏幕,以及由 第一个代理登录流或 后代理 登录 流程显示的屏幕。

    验证签名

    指定红帽构建的 Keycloak 是否在这个 IDP 签名的外部 ID 令牌中验证签名。如果 ON,红帽构建的 Keycloak 必须知道外部 OIDC IDP 的公钥。为了性能,红帽构建 Keycloak 会缓存外部 OIDC 身份提供程序的公钥。

    使用 JWKS URL

    如果 Validate SignaturesON,则此交换机适用。如果使用 JWKS URLON,则红帽构建的 Keycloak 从 JWKS URL 下载 IDP 的公钥。身份提供程序生成新密钥对时下载新密钥。如果 OFF,Red Hat build of Keycloak 使用来自其数据库的公钥(或证书),因此当 IDP 密钥对更改时,将新密钥导入到红帽构建的 Keycloak 数据库。

    JWKS URL

    指向 IDP JWK 密钥位置的 URL。如需更多信息,请参阅 JWK 规格。如果您使用外部红帽构建的 Keycloak 作为 IDP,如果您的代理红帽构建的 Keycloak 在 http://broker-keycloak:8180 上运行,您可以使用一个 URL,其 realm is testhttp://broker-keycloak:8180/realms/test/protocol/openid-connect/certs

    验证公钥

    红帽构建的 Keycloak 用来验证外部 IDP 签名的 PEM 格式的公钥。如果使用 JWKS URL 为 OFF,则应用此密钥。

    验证公钥 Id

    如果使用 JWKS URL 为 OFF,则应用此设置。此设置指定 PEM 格式的公钥的 ID。因为没有从密钥计算密钥 ID 的标准方法,外部身份提供程序可以使用来自红帽构建的 Keycloak 使用的不同算法。如果没有指定此字段的值,Red Hat build of Keycloak 会为所有请求使用验证公钥,而不考虑外部 IDP 发送的密钥 ID。当 ON 时,此字段的值是红帽构建的 Keycloak 使用的密钥 ID 从供应商验证签名,且必须与 IDP 指定的密钥 ID 匹配。

您可以通过提供指向 OpenID 提供程序元数据的 URL 或文件来导入所有配置数据。如果您连接到红帽构建的 Keycloak 外部 IDP,您可以从 < root>/realms/{realm-name}/.well-known/openid-configuration 导入 IDP 设置。此链接是描述 IDP 元数据的 JSON 文档。

如果要使用 Json Web 加密(JWE) ID 令牌或提供程序中的 UserInfo 响应,IDP 需要知道用于红帽构建的 Keycloak 的公钥。供应商使用为不同加密算法定义的 realm 密钥 来解密令牌。Red Hat build of Keycloak 提供了一个标准的 JWKS 端点,IDP 可用于自动下载密钥。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat