はじめに
Keycloak(RedHat Build of Keycloak)ではログインに成功すると内部的にはセッションが生成され、サーバ側で認証されたユーザを管理しています。また、その情報に相対する情報がブラウザ側にもクッキーとして保管されます。
本記事ではサーバ側及びブラウザ側それぞれで、ログイン前/ログイン後に発行されるセッションに関する値を確認してみました。
環境情報
- Red Hat Enterprise Linux : 9.3 (Plow)
- rhbk-22.0.8
- GoogleChrome 122.0.6261.69
ログイン前の状態
今回はテスト用ユーザにて管理用コンソールへのログインを行います。
ブラウザ側で開発/デベロッパーツールから「Application」を選択し、クッキー情報が存在しないことを確認します。
続いてサーバ側でも該当のクライアントに対してユーザーセッションは何もない状態を確認します。
$ ./kcadm.sh get clients/xx/user-sessions [ ]
ログイン後の状態
ブラウザからtestというユーザ名でログインを行うと、ブラウザ側ではクッキーに
AUTH_SESSION_ID_LEGACY
KEYCLOAK_IDENTITY_LEGACY
KEYCLOAK_SESSION_LEGACY
という三つの値が発行されています。
同じくサーバ上でもログインを行ったユーザ情報が確認できます。
# ./kcadm.sh get clients/xx/user-sessions [ { "id" : "...", "username" : "test", "userId" : "...", "ipAddress" : "...", "start" : ..., "lastAccess" : ..., "rememberMe" : false, "clients" : { "..." : "security-admin-console" } } ]
尚、クッキーに格納される値は以下のようになっていました。
- 「AUTH_SESSION_ID_LEGACY」: サーバ上で表示した「id」は同一の文字列
<id>
- 「KEYCLOAK_IDENTITY_LEGACY」 : Base64でエンコーディングされている文字列
{"alg":"HS256","typ" : "JWT","kid" : "xx-xx-xx-xx-xx"}
- 「KEYCLOAK_SESSION_LEGACY」: レルム、ユーザID、セッションID
master/<user-id>/<id>
終わりに
公式ドキュメント通り、ブラウザのCookieにセッション情報と紐づく値が格納されていることが確認できました。
以上、ご参考になれば幸いです。