8.5. Kerberos
Red Hat build of Keycloak は、Simple and Protected GSSAPI Negotiation Mechanism (SPNEGO) プロトコルを介した Kerberos チケットによるログインをサポートしています。ユーザーがセッションを認証した後、SPNEGO は Web ブラウザーを介して透過的に認証します。Web 以外の場合、またはログイン中にチケットが利用できない場合、Red Hat build of Keycloak は Kerberos ユーザー名とパスワードを使用したログインをサポートします。
Web 認証の一般的なユースケースは以下のとおりです。
- ユーザーはデスクトップにログインしています。
- ユーザーは、ブラウザーを使用して Red Hat build of Keycloak が保護する Web アプリケーションにアクセスします。
- アプリケーションは Red Hat build of Keycloak ログインにリダイレクトします。
-
Red Hat build of Keycloak は、ステータス 401 および HTTP ヘッダー
WWW-Authenticate: Negotiateの HTML ログイン画面をレンダリングします。 -
ブラウザーにデスクトップログインからの Kerberos チケットがある場合、ブラウザーはヘッダー
Authorization: Negotiate 'spnego-token'で、デスクトップサインオン情報を Red Hat build of Keycloak に転送します。それ以外の場合は、標準のログイン画面が表示され、ユーザーはログイン認証情報を入力します。 - Red Hat build of Keycloak は、ブラウザーからトークンを検証し、ユーザーを認証します。
- LDAPFederationProvider と Kerberos 認証サポートを使用している場合、Red Hat build of Keycloak は LDAP からユーザーデータをプロビジョニングします。KerberosFederationProvider を使用している場合、ユーザーは Red Hat build of Keycloak でプロファイルの更新とログインデータのプレフィルを行えます。
- Red Hat build of Keycloak がアプリケーションに戻ります。Red Hat build of Keycloak とアプリケーションは、OpenID Connect または SAML メッセージを通じて通信します。Red Hat build of Keycloak は、Kerberos/SPNEGO ログインのブローカーとして機能します。そのため、Kerberos を介して認証する Red Hat build of Keycloak はアプリケーションから認識されません。
Negotiate www-authenticate スキームにより、Kerberos へのフォールバックとして NTLM が可能になり、Windows の一部の Web ブラウザーでは NTLM がデフォルトでサポートされます。www-authenticate チャレンジがブラウザーの許可リスト外のサーバーから送信された場合、ユーザーに NTLM ダイアログプロンプトが表示される場合があります。Red Hat build of Keycloak はこのメカニズムをサポートしていないため、ユーザーはダイアログのキャンセルボタンをクリックして続行する必要があります。この状況は、イントラネットの Web ブラウザーが厳密に設定されていない場合、または Red Hat build of Keycloak がイントラネットとインターネットの両方のユーザーにサービスを提供している場合に発生する可能性があります。custom authenticator を使用すると、ネゴシエートチャレンジをホストのホワイトリストに制限できます。
Kerberos 認証を設定するには、以下の手順を実行します。
- Kerberos サーバー (KDC) のセットアップと設定。
- Red Hat build of Keycloak サーバーのセットアップと設定。
- クライアントマシンのセットアップと設定。
8.5.1. Kerberos サーバーの設定 リンクのコピーリンクがクリップボードにコピーされました!
Kerberos サーバーを設定する手順は、オペレーティングシステム (OS) および Kerberos ベンダーによって異なります。Kerberos サーバーのセットアップおよび設定方法は、Windows Active Directory、MIT Kerberos、および OS のドキュメントを参照してください。
セットアップ時に、以下の手順を実行します。
- Kerberos データベースにユーザープリンシパルを追加します。Kerberos と LDAP を統合することも可能です。つまり、ユーザーアカウントが LDAP サーバーからプロビジョニングされます。
"HTTP" サービスのサービスプリンシパルを追加します。たとえば、Red Hat build of Keycloak サーバーが
www.mydomain.orgで実行されている場合は、サービスプリンシパルHTTP/www.mydomain.org@<kerberos realm>を追加します。MIT Kerberos では、"kadmin" セッションを実行します。MIT Kerberos を使用するマシンで、以下のコマンドを使用できます。
sudo kadmin.local
次に、以下のようなコマンドを使用して、HTTP プリンシパルを追加し、そのキーを keytab ファイルにエクスポートします。
addprinc -randkey HTTP/www.mydomain.org@MYDOMAIN.ORG
ktadd -k /tmp/http.keytab HTTP/www.mydomain.org@MYDOMAIN.ORG
Red Hat build of Keycloak が実行されているホスト上で、keytab ファイル /tmp/http.keytab にアクセスできることを確認します。