Closed2
KeycloakとFreeIPAをLDAPで連携しているとき無効ユーザーを同期する
本当はこのスレッドに書いてあるように、FreeIPA側の nsAccountLock
属性をどうにかしてKeycloak側の enabled
属性に割り当てる事ができれば一番だが、用意されている属性マッパー(user-attribute-ldap-mapper)には真偽値を反転させるような機能はついていない。
頑張れば独自のマッパーを書くことで解決できそうだが、なかなかに労力が要ると思うので、今回はLDAPフィルターでなんとかした方法を書き残しておく。
User LDAP filter の欄に (!(nsAccountLock=TRUE))
と書いておけば、FreeIPA側で無効にされたユーザーはKeycloakのデータベースから削除される。
注意点としては、FreeIPA側でユーザーを無効にすると、当該ユーザーはKeycloak上から削除されてしまうため、Keycloak側にだけ保存される情報(OTPやPasskey等の情報)も同時に消えてしまう点がある。
もっとも、頻繁に特定のユーザーを無効化/有効化するのでもない限り、ほとんどのケースで問題ないと思う。
LDAPの代わりにSSSDで連携すればこんな変なことをせずに済むのだろうが、DockerでKeycloakを動かしていると一筋縄ではいかないようである。コンテナ化しているのにホスト側のDbusソケットをコンテナ内にマウントする必要があるのもイマイチ…
このスクラップは2023/06/27にクローズされました