第 2 章 使用红帽单点登录(RHSSO)进行身份验证


使用红帽单点登录(RHSSO)验证用户身份:

2.1. 使用 Red Hat Single-Sign On (RHSSO)启用身份验证

要使用 Red Hat Single Sign-On (RHSSO)验证用户,请在 Red Hat Developer Hub 中启用 OpenID Connect (OIDC)身份验证供应商。

先决条件

流程

  1. 要允许 Developer Hub 使用 RHSSO 进行身份验证,请完成 RHSSO 中的步骤,创建域和用户, 并注册 Developer Hub 应用程序

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

      • RHSSO 域基础 URL,例如: < your_rhsso_URL> /auth/realms/ <your_realm>
    2. 要在 RHSSO 中注册您的 Developer Hub,请在创建域 中创建一个客户端 ID,使用:

      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. 为性能和安全性配置 RHSSO 域:

      1. 导航到 Configure & gt; Realm Settings
      2. Access Token Lifespan 设置为一个大于五分钟的值(最好为 10 分钟或 15 分钟)以防止性能问题针对每个 API 调用刷新令牌请求。
      3. 启用 Revoke Refresh Token 选项,通过启用刷新令牌轮转策略来提高安全性。
    4. 要准备验证步骤,请在同一域中获取现有用户 或创建用户的凭证 信息。保存验证步骤的用户凭证信息。
  2. 要将 RHSSO 凭证添加到 Developer Hub secret 中,请编辑 Developer Hub secret,如 secrets-rhdh,并添加以下键/值对:

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

    带有强制字段的 app-config-rhdh.yaml 片段使用 RHSSO 启用身份验证

    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-rhdh.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

RHSSO 回调 URL。

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

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

tokenEndpointAuthMethod

令牌端点身份验证方法。

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

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

tokenSignedResponseAlg

令牌签名的响应算法。

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

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

scope

RHSSO 范围.

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

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

signIn.resolvers

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

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

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

auth.backstageTokenExpiration

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

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

auth:
  backstageTokenExpiration: { minutes: <user_defined_value> }

验证

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

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.