第 2 章 使用红帽构建 Keycloak (RHBK)进行身份验证


注意

RHSSO 7.6 作为身份验证提供程序已弃用。您可以继续使用 RHSSO,直到其维护支持结束为止。如需更多信息,请参阅 RHSSO 生命周期日期。作为替代方案,请考虑迁移到红帽构建的 Keycloak (RHBK)。

使用红帽构建的 Keycloak (RHBK)验证用户身份:

2.1. 启用使用红帽构建的 Keycloak (RHBK)身份验证

要使用 Red Hat Build of Keycloak (RHBK)验证用户,请在 Red Hat Developer Hub 中启用 OpenID Connect (OIDC)身份验证供应商。

先决条件

流程

  1. 要允许 Developer Hub 使用 RHBK 进行身份验证,请完成 RHBK 中的步骤,创建 realm 和用户并保护第一个应用程序:

    1. 使用现有域,或使用不同的名称(如 < my_ realm > )创建一个 域。为下一步保存值:

      • RHBK 域基本 URL,例如: < your_rhbk_URL> /realms/ <your_realm>
    2. 要在 RHBK 中注册您的 Developer Hub,请在创建域中注册 第一个应用程序,使用以下内容保护第一个应用程序

      1. 客户端 ID :不同的客户端 ID,如 < RHDH>
      2. 有效的重定向 URI :设置为 OIDC 处理程序 URL: https:// <RHDH_URL&gt; /api/auth/oidc/handler/frame.
      3. 导航到 Credentials 选项卡,再复制 Client secret
      4. 保存下一步的值:

        • 客户端 ID
        • Client Secret
    3. 要准备验证步骤,请在同一域中获取现有用户 或创建用户的凭证 信息。保存验证步骤的用户凭证信息。
  2. 要将 RHSSO 凭证添加到 Developer Hub 中,请将以下键/值对添加到 Developer Hub secret 中:

    AUTH_OIDC_CLIENT_ID
    输入保存 的客户端 ID
    AUTH_OIDC_CLIENT_SECRET
    输入保存 的客户端 Secret
    AUTH_OIDC_METADATA_URL
    输入保存的 RHBK 域基础 URL
  3. 要在 Developer Hub 自定义配置中设置 RHBK 身份验证供应商,请编辑自定义 Developer Hub ConfigMap,如 app-config-rhdh,并将以下行添加到 app-config.yaml 内容:

    app-config.yaml 片段带有强制字段,以启用 RHBK 身份验证

    auth:
      environment: production
      providers:
        oidc:
          production:
            metadataUrl: ${AUTH_OIDC_METADATA_URL}
            clientId: ${AUTH_OIDC_CLIENT_ID}
            clientSecret: ${AUTH_OIDC_CLIENT_SECRET}
    signInPage: oidc

    环境:production
    将环境标记为 production,以在 Developer Hub 主页中隐藏 Guest 登录。
    metadataUrl, clientId, clientSecret
    使用您的 secret 配置 OIDC 供应商。
    sigInPage: oidc
    将 OIDC 供应商作为默认登录供应商启用。

    可选: 考虑添加以下可选字段:

    dangerouslyAllowSignInWithoutUserInCatalog: true

    要启用身份验证,而无需在 Developer Hub 软件目录中置备用户。

    警告

    使用这个选项探索 Developer Hub 功能,但不要在生产环境中使用它。

    带有可选字段的 app-config.yaml 片段,允许验证软件目录中缺少的用户

    auth:
      environment: production
      providers:
        oidc:
          production:
            metadataUrl: ${AUTH_OIDC_METADATA_URL}
            clientId: ${AUTH_OIDC_CLIENT_ID}
            clientSecret: ${AUTH_OIDC_CLIENT_SECRET}
    signInPage: oidc
    dangerouslyAllowSignInWithoutUserInCatalog: true

callbackUrl

RHBK 回调 URL。

带有可选 callbackURL 字段的 app-config.yaml 片段

auth:
  providers:
    oidc:
      production:
        callbackUrl: ${AUTH_OIDC_CALLBACK_URL}

tokenEndpointAuthMethod

令牌端点身份验证方法。

带有可选 tokenEndpointAuthMethod 字段的 app-config.yaml 片段

auth:
  providers:
    oidc:
      production:
        tokenEndpointAuthMethod: ${AUTH_OIDC_TOKEN_ENDPOINT_METHOD}

tokenSignedResponseAlg

令牌签名的响应算法。

带有可选 tokenSignedResponseAlg 字段的 app-config.yaml 片段

auth:
  providers:
    oidc:
      production:
        tokenSignedResponseAlg: ${AUTH_OIDC_SIGNED_RESPONSE_ALG}

scope

RHBK 范围.

带有可选 scope 字段的 app-config.yaml 片段

auth:
  providers:
    oidc:
      production:
        scope: ${AUTH_OIDC_SCOPE}

signIn.resolvers

声明性解析器覆盖默认解析器: emailLocalPartMatchingUserEntityName。身份验证提供程序尝试每个登录解析器,直到成功为止,如果不成功,则失败。

带有可选 callbackURL 字段的 app-config.yaml 片段

auth:
  providers:
    oidc:
      production:
        signIn:
          resolvers:
            - resolver: preferredUsernameMatchingUserEntityName
            - resolver: emailMatchingUserEntityProfileEmail
            - resolver: emailLocalPartMatchingUserEntityName

auth.backstageTokenExpiration

要从默认值一小时修改 Developer Hub 令牌过期,请注意,这指的是短期加密令牌的有效性,而不是会话持续时间。expiration 值必须在 10 分钟到 24 小时之间设置。

带有可选 auth.backstageTokenExpiration 字段的 app-config.yaml 片段

auth:
  backstageTokenExpiration: { minutes: <user_defined_value> }

安全考虑

如果因为频繁刷新令牌请求而发出多个有效的刷新令牌,旧的令牌将保持有效,直到它们过期。要增强安全性并防止旧令牌造成潜在的滥用,请在 RHBK 域中启用刷新令牌轮转策略。

  1. 在导航菜单的 Configure 部分中,单击 Realm Settings
  2. Realm Settings 页面,单击 Tokens 选项卡。
  3. Tokens 选项卡的 Refresh tokens 部分中,将 Revoke Refresh Token 切换到 Enabled 位置。

验证

  1. 进入 Developer Hub 登录页面。
  2. 您的 Developer Hub 签名页面显示 使用 OIDC 的 Sign in,并且 guest 用户登录被禁用。
  3. 使用保存 的用户名和密码 值使用 OIDC 登录。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.