第 2 章 使用红帽单点登录(RHSSO)进行身份验证
使用红帽单点登录(RHSSO)验证用户身份:
2.1. 使用 Red Hat Single-Sign On (RHSSO)启用身份验证
要使用 Red Hat Single Sign-On (RHSSO)验证用户,请在 Red Hat Developer Hub 中启用 OpenID Connect (OIDC)身份验证供应商。
先决条件
- 您 添加了自定义 Developer Hub 应用程序配置,并有足够的权限来修改它。
- RHSSO 中有足够的权限来创建和管理域。
流程
要允许 Developer Hub 使用 RHSSO 进行身份验证,请完成 RHSSO 中的步骤,创建域和用户, 并注册 Developer Hub 应用程序 :
使用现有域,或使用不同的名称(如 < my_ realm > )创建一个 域。为下一步保存值:
- RHSSO 域基础 URL,例如: < your_rhsso_URL> /auth/realms/ <your_realm>。
要在 RHSSO 中注册您的 Developer Hub,请在创建域 中创建一个客户端 ID,使用:
- 客户端 ID :不同的客户端 ID,如 < RHDH>。
-
有效的重定向 URI :设置为 OIDC 处理程序 URL:
https:// <RHDH_URL> /api/auth/oidc/handler/frame
. - 导航到 Credentials 选项卡,再复制 Client secret。
保存下一步的值:
- 客户端 ID
- Client Secret
为性能和安全性配置 RHSSO 域:
- 导航到 Configure & gt; Realm Settings。
- 将 Access Token Lifespan 设置为一个大于五分钟的值(最好为 10 分钟或 15 分钟)以防止性能问题针对每个 API 调用刷新令牌请求。
- 启用 Revoke Refresh Token 选项,通过启用刷新令牌轮转策略来提高安全性。
- 要准备验证步骤,请在同一域中获取现有用户 或创建用户的凭证 信息。保存验证步骤的用户凭证信息。
要将 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。
要在 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> }
验证
- 进入 Developer Hub 登录页面。
- 您的 Developer Hub 签名页面显示 使用 OIDC 的 Sign in,并且 guest 用户登录被禁用。
- 使用保存 的用户名和密码 值使用 OIDC 登录。