第3章 Red Hat build of Keycloak (RHBK) による認証
Red Hat build of Keycloak (RHBK) を使用してユーザーを認証するには、以下を行います。
3.1. Red Hat build of Keycloak (RHBK) による認証の有効化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Keycloak (RHBK) を使用してユーザーを認証するには、Red Hat Developer Hub で OpenID Connect (OIDC) 認証プロバイダーを有効にします。
前提条件
- カスタムの Developer Hub アプリケーション設定を追加 した。また、その設定を変更するための十分な権限を持っている。
- RHSSO でレルムを作成および管理するための十分な権限がある。
手順
Developer Hub が RHBK で認証できるようにするには、RHBK で手順を完了し、レルムとユーザーを作成 して 最初のアプリケーションを保護 します。
既存のレルムを使用するか、<my_realm> などの固有の 名前 を持つ レルムを作成 します。次のステップのために値を保存します。
- RHBK レルムのベース URL (例: <your_rhbk_URL>/realms/<your_realm>)。
RHBK に Developer Hub を登録するには、作成されたレルムで、次の操作を実行して 最初のアプリケーションを保護 します。
- クライアント ID: <RHDH> などの固有のクライアント ID。
-
有効なリダイレクト URI: OIDC ハンドラー URL
https://<RHDH_URL>/api/auth/oidc/handler/frameに設定します。 - Credentials タブに移動し、クライアントシークレット をコピーします。
次のステップのために値を保存します。
- クライアント ID
- クライアントシークレット
- 検証手順を準備するには、同じレルムで、既存のユーザーの認証情報を取得するか、ユーザーを作成 します。検証手順用にユーザー認証情報を保存します。
RHSSO 認証情報を Developer Hub に追加するには、以下のキーと値のペアを Developer Hub シークレット に追加します。
AUTH_OIDC_CLIENT_ID- 保存した クライアント ID を入力します。
AUTH_OIDC_CLIENT_SECRET- 保存した クライアントシークレット を入力します。
AUTH_OIDC_METADATA_URL- 保存した RHBK realm base URL を入力します。
Developer Hub のカスタム設定で RHBK 認証プロバイダーをセットアップするには、
app-config-rhdhなどのカスタム Developer Hub ConfigMap を編集し、app-config.yamlコンテンツに次の行を追加します。必須フィールドを設定します。
RHBK による認証を有効にするための必須フィールドを含む
app-config.yamlフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow environment: production-
環境を
productionとしてマークすると、Developer Hub のホームページでゲストログインが非表示になります。 metadataUrl、clientId、clientSecret- シークレットを使用して OIDC プロバイダーを設定します。
sigInPage: oidc- OIDC プロバイダーをデフォルトのサインインプロバイダーとして有効にします。
prompt: auto- アクティブな RHSSO セッションが存在する場合に、アイデンティティープロバイダーが認証情報を要求するか、ログインリダイレクトをバイパスするかを自動的に決定できるようにします。
prompt: auto が設定されていない場合、アイデンティティープロバイダーはデフォルトで prompt: none に設定されます。この場合、すでにログインしていると想定され、アクティブなセッションのないサインイン要求が拒否されます。
callbackUrlRHBK コールバック URL。
オプションの
callbackURLフィールドを含むapp-config.yamlフラグメントauth: providers: oidc: production: callbackUrl: ${AUTH_OIDC_CALLBACK_URL}auth: providers: oidc: production: callbackUrl: ${AUTH_OIDC_CALLBACK_URL}Copy to Clipboard Copied! Toggle word wrap Toggle overflow tokenEndpointAuthMethodトークンエンドポイント認証方法。
オプションの
tokenEndpointAuthMethodフィールドを含むapp-config.yamlフラグメントauth: providers: oidc: production: tokenEndpointAuthMethod: ${AUTH_OIDC_TOKEN_ENDPOINT_METHOD}auth: providers: oidc: production: tokenEndpointAuthMethod: ${AUTH_OIDC_TOKEN_ENDPOINT_METHOD}Copy to Clipboard Copied! Toggle word wrap Toggle overflow tokenSignedResponseAlgトークン署名応答アルゴリズム。
オプションの
tokenSignedResponseAlgフィールドを含むapp-config.yamlフラグメントauth: providers: oidc: production: tokenSignedResponseAlg: ${AUTH_OIDC_SIGNED_RESPONSE_ALG}auth: providers: oidc: production: tokenSignedResponseAlg: ${AUTH_OIDC_SIGNED_RESPONSE_ALG}Copy to Clipboard Copied! Toggle word wrap Toggle overflow scopeRHBK スコープ。
オプションの
scopeフィールドを含むapp-config.yamlフラグメントauth: providers: oidc: production: scope: ${AUTH_OIDC_SCOPE}auth: providers: oidc: production: scope: ${AUTH_OIDC_SCOPE}Copy to Clipboard Copied! Toggle word wrap Toggle overflow signInresolvers認証が成功したら、サインインするユーザーを、Developer Hub カタログ内の既存のユーザーに解決する必要があります。ユースケースに合わせて最適な形でユーザーを確実にマッチさせるために、特定のリゾルバーを設定することを検討してください。デフォルトのリゾルバーをオーバーライドするには、リゾルバーリストを入力します (
oidcSubClaimMatchingKeycloakUserId)。認証プロバイダーは、成功するまで各サインインリゾルバーを順番に試行します。どれも成功しない場合は失敗します。
警告実稼働モードでは、ユーザーが確実にマッチするように、リゾルバーを 1 つだけ設定してください。
resolver:::: サインインリゾルバー名を入力します。使用可能な値: *oidcSubClaimMatchingKeycloakUserId*emailLocalPartMatchingUserEntityName*emailMatchingUserEntityProfileEmail*preferredUsernameMatchingUserEntityName+ オプションの
resolversリストを含むapp-config.yamlフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow dangerouslyAllowSignInWithoutUserInCatalog: trueDeveloper Hub ソフトウェアカタログのユーザープロビジョニング要件を回避するようにサインインリゾルバーを設定します。
警告このオプションは Developer Hub の機能を調べるために使用しますが、実稼働環境では使用しないでください。
ソフトウェアカタログに存在しないユーザーのサインインを許可するオプションのフィールドを含む
app-config-rhdh.yamlフラグメントCopy to Clipboard Copied! Toggle word wrap Toggle overflow
sessionDurationユーザーセッションの有効期間。期間を
msライブラリー形式 ('24h'、'2 days' など)、ISO 期間形式、またはコード内で使用される "human duration" 形式で入力します。オプションの
sessionDurationフィールドを含むapp-config-rhdh.yamlフラグメントauth: providers: github: production: sessionDuration: { hours: 24 }auth: providers: github: production: sessionDuration: { hours: 24 }Copy to Clipboard Copied! Toggle word wrap Toggle overflow authbackstageTokenExpiration- Developer Hub トークンの有効期限をデフォルト値の 1 時間から変更する場合、これはセッション期間ではなく、短期暗号化トークンの有効期間を指すことに注意してください。有効期限の値は 10 分から 24 時間の間で設定する必要があります。
オプションの
auth.backstageTokenExpirationフィールドを含むapp-config.yamlフラグメントauth: backstageTokenExpiration: { minutes: <user_defined_value> }auth: backstageTokenExpiration: { minutes: <user_defined_value> }Copy to Clipboard Copied! Toggle word wrap Toggle overflow セキュリティー上の考慮事項頻繁なリフレッシュトークンの要求により複数の有効なリフレッシュトークンが発行された場合、古いトークンは期限が切れるまで有効です。セキュリティーを強化し、古いトークンの誤用を防ぐには、RHBK レルムでリフレッシュトークンのローテーションストラテジーを有効にします。
- ナビゲーションメニューの Configure セクションで、Realm Settings をクリックします。
- Realm Settings ページで、Tokens タブをクリックします。
- Tokens タブの Refresh tokens セクションで、Revoke Refresh Token を Enabled に切り替えます。
検証
- Developer Hub のログインページに移動します。
- Developer Hub のサインインページには Sign in using OIDC と表示され、ゲストユーザーのサインインは無効になっています。
- 保存した ユーザー名 と パスワード の値を使用して、OIDC でログインします。