第 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)身份验证供应商。
先决条件
- 您 添加了自定义 Developer Hub 应用程序配置,并有足够的权限来修改它。
- RHSSO 中有足够的权限来创建和管理域。
流程
要允许 Developer Hub 使用 RHBK 进行身份验证,请完成 RHBK 中的步骤,创建 realm 和用户,并保护第一个应用程序:
使用现有域,或使用不同的名称(如 < my_ realm > )创建一个 域。为下一步保存值:
- RHBK 域基本 URL,例如: < your_rhbk_URL> /realms/ <your_realm>。
要在 RHBK 中注册您的 Developer Hub,请在创建域中注册 第一个应用程序,使用以下内容保护第一个应用程序 :
- 客户端 ID :不同的客户端 ID,如 < RHDH>。
-
有效的重定向 URI :设置为 OIDC 处理程序 URL:
https:// <RHDH_URL> /api/auth/oidc/handler/frame
. - 导航到 Credentials 选项卡,再复制 Client secret。
保存下一步的值:
- 客户端 ID
- Client Secret
- 要准备验证步骤,请在同一域中获取现有用户 或创建用户的凭证 信息。保存验证步骤的用户凭证信息。
要将 RHSSO 凭证添加到 Developer Hub 中,请将以下键/值对添加到 Developer Hub secret 中:
AUTH_OIDC_CLIENT_ID
- 输入保存 的客户端 ID。
AUTH_OIDC_CLIENT_SECRET
- 输入保存 的客户端 Secret。
AUTH_OIDC_METADATA_URL
- 输入保存的 RHBK 域基础 URL。
要在 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 域中启用刷新令牌轮转策略。
- 在导航菜单的 Configure 部分中,单击 Realm Settings。
- 从 Realm Settings 页面,单击 Tokens 选项卡。
- 在 Tokens 选项卡的 Refresh tokens 部分中,将 Revoke Refresh Token 切换到 Enabled 位置。
验证
- 进入 Developer Hub 登录页面。
- 您的 Developer Hub 签名页面显示 使用 OIDC 的 Sign in,并且 guest 用户登录被禁用。
- 使用保存 的用户名和密码 值使用 OIDC 登录。