第 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} prompt: auto signInPage: oidc环境:production-
将环境标记为
production,以在 Developer Hub 主页中隐藏 Guest 登录。 metadataUrl,clientId,clientSecret- 使用您的 secret 配置 OIDC 供应商。
sigInPage: oidc- 将 OIDC 供应商作为默认登录供应商启用。
提示: auto- 要允许身份提供程序自动决定是否提示输入凭证,或者在存在活跃的 RHSSO 会话时绕过登录重定向。
如果没有设置 prompt: auto,则身份提供程序默认为 prompt: none,这假设您已经登录,并在没有活跃会话的情况下拒绝登录请求。
callbackUrlRHBK 回调 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}scopeRHBK 范围.
带有可选
scope字段的app-config.yaml片段auth: providers: oidc: production: scope: ${AUTH_OIDC_SCOPE}signIn解析器身份验证成功后,中的用户签名必须解析为 Developer Hub 目录中的现有用户。为了更好地为您的用例安全地匹配用户,请考虑配置特定的解析器。输入解析器列表以覆盖默认解析器:
emailLocalPartMatchingUserEntityName。身份验证提供程序尝试每个登录解析器按顺序尝试,直到成功为止,如果没有成功,则失败。
警告在 production 模式中,只配置一个解析器以确保用户被安全地匹配。
解析器输入登录解析器名称。可用值:
-
emailLocalPartMatchingUserEntityName -
emailMatchingUserEntityProfileEmail -
preferredUsernameMatchingUserEntityName
-
带有可选 解析器 列表的 app-config.yaml 片段
auth:
providers:
oidc:
production:
signIn:
resolvers:
- resolver: preferredUsernameMatchingUserEntityName
- resolver: emailMatchingUserEntityProfileEmail
- resolver: emailLocalPartMatchingUserEntityName
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} signIn: resolvers: - resolver: emailLocalPartMatchingUserEntityName dangerouslyAllowSignInWithoutUserInCatalog: true signInPage: oidcsessionDuration用户会话的寿命。以
ms库格式输入持续时间(如 '24h'、'2 days')、ISO 持续时间或 "human duration",如代码中使用的。带有可选
sessionDuration字段的app-config-rhdh.yaml片段auth: providers: github: production: sessionDuration: { hours: 24 }authbackstageTokenExpiration- 要从默认值一小时修改 Developer Hub 令牌过期,请注意,这指的是短期加密令牌的有效性,而不是会话持续时间。expiration 值必须在 10 分钟到 24 小时之间设置。
.
app-config.yaml片段带有可选的auth.backstageTokenExpiration字段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 登录。