Windows ドメインで Keycloak の Kerberos 統合を実装しようとしています。KeycloakにLDAPプロバイダーを追加し、ADとの接続をセットアップしましたが、すべて機能します。
サンドボックス環境でテストしています ドメイン: SANDBOX.NET DC: KEYTEST-DC キークロークが実行されているアプリケーション サーバー: KEYTEST-APP kerberos で自動ログインをテストするクライアント マシン: KEYTEST-CLIENT
次のアクションから始めました(DC管理者アカウントを使用してDCで実行)
keycloak が実行されているマシン名と同じ名前で新しい AD サービス ユーザーを作成します 名: KEYTEST-APP ユーザー ログオン名: HTTP/keytest-app.sandbox.net パスワード: S@ndM@n
このユーザーの spn を設定します setspn -A HTTP/keytest-app.sandbox.net@SANDBOX.NET KEYTEST-APP
KeyTab ファイルの作成
ktpass /out keycloak.keytab /princ HTTP/keytest-app.sandbox.net@SANDBOX.NET /mapuser KEYTEST-APP@SANDBOX.NET /pass S@ndM@n
キータブ ファイルをアプリ サーバーにコピーし、それを使用してキークロークで kerberos を構成します Kerberos レルム: SANDBOX.NET サーバー プリンシパル: HTTP/keytest-app.sandbox.net@SANDBOX.NET キータブ: キータブ ファイルの場所
私は最初のテストを行い、すべてが完璧に機能しました。
次に、プロセス全体を文書化したかったので、最初からやり直しましたが、アプリサーバーの名前と一致する必要があることを指定していない他のドキュメントを見つけたので、AD サービスユーザーの名前として svc_keycloak を選択しました。別のパスワードも選択しましたが、これをテストしたところ機能しませんでした。キークロークのエラー:SPNEGO login failed: java.security.PrivilegedActionException: GSSException: Failure unspecified at GSS-API level (Mechanism level: Checksum failed)
最終的に、ktpass コマンドで S@ndM@n パスワードを使用した場合、svc_keycloak ユーザーでのみ機能することがわかりました。これは KEYTEST-APP ユーザーからのパスワードでしたが。
その後、多くのテストを行い、KEYTEST-APP ユーザーを削除し、新しい DC 管理者アカウントを作成し、パスワードを変更しました。それでも、kerberos は、ktpass コマンドで S@ndM@n をパスワードとして使用した場合にのみ機能しました (どのユーザーを試しても)。
最終的には、ゼロから始めて、新しい DC、新しいアプリ サーバー、すべてをゼロから構成しました。今回は、新しいサービス ユーザー svc_keycloak とまったく新しいパスワードから始めましたが、keycloak でも同じエラーが発生しました。次に、ユーザー KEYTEST-APP を再度作成し、パスワード S@ndM@n を指定しました (ここで別のパスワードを選択して、最初からやり直す必要があるかもしれません)。svc_keycloak でテストしたところ、ktpass コマンドでパスワードとして S@ndM@n を指定した場合にも機能しました。
また、KEYTEST-APP ユーザーを削除した後も機能し続けるため、パスワードをどこかに保存する必要がありますか?? KEYTEST-APP ユーザーを削除したときに、実行時にまだサービス プリンシパル名を取得していることに気付きました: setspn -l KEYTEST-APP
いくつかの調査の結果 (kerberos に関する私の知識は非常に限られているため)、これは KEYTEST-APP もコンピューター アカウントであるためであることがわかりました。私の知る限り、すべてのコンピューター アカウントには独自のパスワードがありますが、これらは完全にランダムです。
S@ndM@n パスワードでのみ機能する理由を知りたいだけです。これは、アプリ サーバーと同じ名前のユーザーに使用した最初のパスワードであるためですか? 次に、これを更新する方法が必要ですか?または、何かを見落として、誰かが私の設定で問題を見つけたのかもしれません。
Thx、レミ