
ブラウザ (Chrome または Firefox) と、ユーザー フェデレーション AD ドメイン (Kerberos が構成されている) で構成された Keycloak を使用して SSO を機能させようとしています。
まず、私が持っているものの概要を示し、その後に詳細を追加します。
概要:
認証エンドポイント「.../auth/realms/test_realm/protocol/openid-connect/auth」を呼び出し、tcpdump を使用すると、次のようになります。
ブラウザは必要なパラメータを含むgetリクエストを認可エンドポイントに送信する
Keycloak は正しく応答します:
- 401 Unauthorized
- ヘッダー "WWW-Authenticate: Negotiate"ブラウザは、新しい GET リクエストを正しく送信します:
-with "Authorization: Negotiate TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAAAAKAGFKAAAADw=="
これは spnego トークンを送信していますKeycloakは「200 OK」で応答しますが、ログインページがあり、トークンやコールバックURLがないため、Keycloakログにエラーはありません。
Q: ここでKeycloakはどのような応答をするのでしょうか? 次のようなクッキーをコールバックURLに送信する必要があります。キークロークIDそしてキークロークセッションですよね?この Cookie を使用すると、トークン エンドポイントを呼び出して、アプリケーションで使用するトークンを取得できます。
Q: 何が足りないのか分かりますか? たくさんの部品があることは分かっていますが、何か明らかなものが足りないのかもしれません。
手動ログインを行うときは、トークン エンドポイントを呼び出してトークンを取得するために使用できる Cookie KEYCLOAK_IDENTIT および KEYCLOAK_SESSION を返す login-actions/authenticate エンドポイントを呼び出します。
テスト ドメインからログインしたユーザーと同じユーザーを使用しているため、keycloak がテスト対象ユーザーを認証できることがわかります。
さらに詳しい情報
Keycloakの設定には、以下の公式ドキュメントに従いました。https://www.keycloak.org/docs/latest/server_admin/
Windows クライアント マシン (ブラウザーは Chrome または Firefox、両方テスト済み):
- URL をホワイトリストに追加しました
- 必要なパラメーターを使用して認証エンドポイントを呼び出しています
Windows Server 2019 AD ドメイン
- 次を使用してキータブ ファイルを作成しました:
ktpass /out testdomainlocal_keytab_file.keytab /princ HTTP/[メールアドレス]/mapuser keycloak_kerberos /pass "somepass" /crypto All /ptype KRB5_NT_PRINCIPAL /kvno 1
- ユーザー keycloak_kerberos はテストドメインに存在します
Linux rhel8.8 には、keycloak 22.01 があります
- 「realm join」を使用して Linux マシンをテスト ドメインに追加しました -
ldap テスト ユーザーを手動で認証できる LDAP AD のセットアップ ユーザー フェデレーションを追加しました -
AD マシンから作成されたプリンシパルとキータブを使用して Kerberos 統合をアクティブ化しました
- ドメイン情報を /etc/krb5.conf ファイルに追加しまし
た 必要に応じて詳細を表示できますが、情報を匿名化する必要があります。