TL;DR
先にほぼ結論ですが、まだ実装で解決されていないため、回避方法を活用するしかなさそうです。
- Keycloak 26.0.5 では、管理画面の realm 一覧の取得機能に不具合があるため、master realm の管理画面へログイン後、一度 realm を切り替えるとその realm 以外に切り替えることができなくなります
- master realm から切り替える時には問題がないため、
/admin/master/console/
の path へ戻って操作することで、回避することができます - issue として上がっているものの、根本解決はまだ完了していないため、しばらくは回避策で凌ぐ運用をすることになりそうです
発生した事象の概要
Keycloak の管理画面では、realm を選択して特定のユーザープール向けの設定を行います。
realm とは、いわゆるマルチテナント型のサービスにおけるテナントに相当するような、 Keycloak 固有の概念です。
realm の切り替えは管理画面上から行うことができます。
ある時、クライアントアプリケーションの開発担当者が A realm 向けの設定を行なった後、 B realm に切り替えようとした際、結果が返ってこなくなりました。
これが今回起きた問題のざっくりとした概要です。
↓ログイン後、master からは切り替えができる
↓切り替え後は別の realm に切り替えられない
issue は報告され済み
概要は把握したため、keycloak の issue を調べると、すでに報告されていました
細かな背景はこれらのページに譲りますが、どうやら管理画面の UI 実装を変更した際に作り込まれてしまったようです。
- issue:
- PR:
- use master realm to fetch realm names list #35128
- しかし、これでは根本解決にならなかったようで、この PR 自体は revert されています
回避方法がありそう
master realm でログインした後、一度は realm を切り替えられることがわかっています。
おそらく、master realm の設定画面だけ特殊で、ここで realm 一覧を取得することは可能になっているのだと思われます。
master realm の設定画面は URL path が明確に決まっています。
そのため、困ったらこの path を毎 回ひ らくことで、目的の realm へ切り替えられないことを 回避 できそうです
- path:
/admin/master/console/
- 例:
https://example.com/admin/master/console/
これらの事情のため、一旦は運用上の制限として周知して、根本対応は今後のリリースを待つという方向が良さそうです
得られた学び(感想)
バージョンアップ時の挙動確認
新しいバージョンに更新された直後ほどあからさまな不具合は出会いやすいので、気を張っておく必要があります。
アップデート後に稼働していることを確認して、安心してしまって完全に気を抜いていました。
ただ、いろんな機能を試す必要があるとして、こういったいくつかの条件があるケースを消し込むことは困難な気がします。
基本的な動作確認以上の内容についてはどうしても発生ベースで調べるしかない(腹を括るしかない)ということなのかもしれません。
不具合調査の優先順位
今回 issue にたどり着く前に、UI のソースを読んだり開発ツールでリクエストを眺めたりしてしまった
(403 が返ってきていることまではわかったものの・・・)
今回みたいな、条件はあるもののいろんなユースケースで再現可能な問題はすでに issue や PR が立っている可能性があります。
もちろん最終的に実装を読むことは確信を持つためには良い方法ですが、それよりも 誰かがすでに困っていないのか? を探した方がコスパが良かったんだろうな、と思いました。
逆に言えば可能な限り最新バージョンを追っかけている都合、まだ発見されていない issue に出会うこともありそうです。
いざそういったケースでフィードバックをためらってしまうと、逆に同じ問題を踏む人たちにとって issue 報告を強いることになってしまいます。
恐れを減らすため、普段から issue や discussion へのアンテナを張っておくのが良さそうかな、と思いました