搜索

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

download PDF

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

流程

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

    添加身份提供程序

    Add Identity Provider

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

    表 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 断言作为客户端身份验证的签名算法。如果 JWT 使用私钥或客户端机密签名为 jwt,则需要它。如果没有指定算法,则会对以下算法进行调整。当 JWT 使用私钥签名时,RS256 会进行调整。当 Client secret 为 jwt 时,HS256 会进行调整。

    客户端断言 Audience

    用于客户端断言的受众。默认值为 IDP 的令牌端点 URL。

    发布者

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

    默认范围

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

    提示

    OIDC 规格中的 prompt 参数。通过此参数,您可以强制重新验证和其他选项。详情请查看规格。

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

    指定 IDP 是否接受包含 prompt=none 查询参数的转发验证请求。如果 realm 收到带有 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 错误。此身份验证包括所需的操作(如密码更改)、同意屏幕,以及 first broker login 流或 post broker login 流显示的屏幕。

    验证签名

    指定红帽构建的 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 格式的公钥。如果 Use JWKS URLOFF,则应用此密钥。

    验证公钥 Id

    如果 Use JWKS URLOFF,则应用此设置。此设置以 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 设置。这个链接是一个 JSON 文档,描述 IDP 的元数据。

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.