第2章 Red Hat build of Keycloak (RHBK) による認証
RHSSO 7.6 は認証プロバイダーとしては非推奨です。RHSSO はメンテナンスサポートが終了するまで引き続き使用できます。詳細は、RHSSO ライフサイクルの日付 を参照してください。代わりに、Red Hat build of Keycloak (RHBK) への移行を検討してください。
Red Hat build of Keycloak (RHBK) を使用してユーザーを認証するには、以下を行います。
2.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 タブに移動し、Client secret をコピーします。
次のステップのために値を保存します。
- クライアント 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
フラグメント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
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
Copy to Clipboard Copied! environment: production
-
環境を
production
としてマークすると、Developer Hub のホームページでゲストログインが非表示になります。 metadataUrl
、clientId
、clientSecret
- シークレットを使用して OIDC プロバイダーを設定します。
sigInPage: oidc
- OIDC プロバイダーをデフォルトのサインインプロバイダーとして有効にします。
prompt: auto
- アクティブな RHSSO セッションが存在する場合に、アイデンティティープロバイダーが認証情報を要求するか、ログインリダイレクトをバイパスするかを自動的に決定できるようにします。
prompt: auto
が設定されていない場合、アイデンティティープロバイダーはデフォルトで prompt: none
に設定されます。この場合、すでにログインしていると想定され、アクティブなセッションのないサインイン要求が拒否されます。
callbackUrl
RHBK コールバック 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! 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! 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! scope
RHBK スコープ。
オプションの
scope
フィールドを含むapp-config.yaml
フラグメントauth: providers: oidc: production: scope: ${AUTH_OIDC_SCOPE}
auth: providers: oidc: production: scope: ${AUTH_OIDC_SCOPE}
Copy to Clipboard Copied! signIn
resolvers
認証が成功したら、サインインするユーザーを、Developer Hub カタログ内の既存のユーザーに解決する必要があります。ユースケースに合わせて最適な形でユーザーを確実にマッチさせるために、特定のリゾルバーを設定することを検討してください。デフォルトのリゾルバー
emailLocalPartMatchingUserEntityName
をオーバーライドするには、リゾルバーのリストを入力します。認証プロバイダーは、成功するまで各サインインリゾルバーを順番に試行します。どれも成功しない場合は失敗します。
警告実稼働モードでは、ユーザーが確実にマッチするように、リゾルバーを 1 つだけ設定してください。
resolver
サインインリゾルバー名を入力します。使用可能な値は次のとおりです。
-
emailLocalPartMatchingUserEntityName
-
emailMatchingUserEntityProfileEmail
-
preferredUsernameMatchingUserEntityName
-
オプションの resolvers
リストを含む app-config.yaml
フラグメント
auth: providers: oidc: production: signIn: resolvers: - resolver: preferredUsernameMatchingUserEntityName - resolver: emailMatchingUserEntityProfileEmail - resolver: emailLocalPartMatchingUserEntityName
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: oidc
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: oidc
Copy to Clipboard Copied! sessionDuration
ユーザーセッションの有効期間。期間は、
ms
ライブラリー形式 ('24h'、'2 days' など)、ISO の期間、またはコード内で使用される "人間が判読可能な期間" で入力します。オプションの
sessionDuration
フィールドを含むapp-config-rhdh.yaml
フラグメントauth: providers: github: production: sessionDuration: { hours: 24 }
auth: providers: github: production: sessionDuration: { hours: 24 }
Copy to Clipboard Copied! auth
backstageTokenExpiration
- 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! セキュリティー上の考慮事項頻繁なリフレッシュトークンの要求により複数の有効なリフレッシュトークンが発行された場合、古いトークンは期限が切れるまで有効です。セキュリティーを強化し、古いトークンの誤用を防ぐには、RHBK レルムでリフレッシュトークンのローテーションストラテジーを有効にします。
- ナビゲーションメニューの Configure セクションで、Realm Settings をクリックします。
- Realm Settings ページで、Tokens タブをクリックします。
- Tokens タブの Refresh tokens セクションで、Revoke Refresh Token を Enabled に切り替えます。
検証
- Developer Hub のログインページに移動します。
- Developer Hub のサインインページには OIDC を使用してサインイン と表示され、ゲストユーザーのサインインは無効になっています。
- 保存した ユーザー名 と パスワード の値を使用して、OIDC でログインします。