🪪

KeycloakとOpenLDAPを連携する.

2024/09/03に公開

はじめに

KeycloakとOpenLDAPを連携し,Keycloak側でもOpenLDAP側に登録しているデータを閲覧できるようにする方法を説明します.

前提

  • OS:Ubuntu
  • Keycloak:25.04
  • OpenLDAPにいくつかデータを登録済み

手順

1. realm(レルム)を新たに作成

  • 適当に名前を決めます.
  • 以後,新たに作成したこのrealm内でLDAPの連携を行います.

2. Configure(設定)User federation(ユーザー・フェデレーション)に,ldap設定を追加する.

2.1 User federation → Add Ldap providersをクリック

2.2 LDAPの設定を行う

2.2.1 General options(LDAP一般設定)

主な変数 詳細
UI display name 適当に決めます.
Vendor Otherにします.

2.2.2 Connection and authentication settings(LDAPとの接続設定)

主な変数 詳細
Connection URL(接続URL) 接続するLDAPサーバのURL(例:ldap://~)
Bind type(バインドタイプ) simpleにします
Bind DN(バインドDN) LDAP管理者のDN(cn=admin, dc=~, dc=~)
Bind credentials LDAP管理者のパスワード

※接続テストと認証テストは行うことを推奨します.



2.2.3 LDAP searching and updating(LDAP検索と編集の設定)

主な変数 詳細
Edit mode(編集モード) keycloakからLDAPデータを編集させるかどうかの設定
Users DN(ユーザーDN) 検索したいユーザが存在するLDAPツリーのDN
Username LDAP attribute(ユーザー名のLDAP属性) keycloak側のユーザ名としてマッピングされるLDAP属性(例:uid
RDN LDAP attribute(RDN LDAP属性) RDNに使用するLDAP属性(例:uid
UUID LDAP attribute(UUID LDAP属性) LDAPのオブジェクトのUUIDとして使用される属性(例:uid
User object classes(ユーザー・オブジェクト・クラス ユーザの方で適用されているLDAPのオブジェクトクラスを列挙していきます.
Search scope(検索スコープ) subtreeと設定すると,Users DN(ユーザーDN)の方で設定したDN配下全てを検索できる.


2.2.3 Synchronization settings(同期設定)

主な変数 詳細
Import users(ユーザーのインポート) onにします
Sync Registrations Onにします
Periodic full sync(定期的なフル同期) Onにします
Full sync period(フル同期の周期) 単位は,秒(second)
Periodic changed users sync(定期的な変更ユーザーの同期) Onにします
Changed users sync period(変更ユーザーの同期周期) 単位は,秒(second)


3. LDAPユーザー確認

  • Manage(管理)Users(ユーザー)に移ります.
  • 検索欄にアスタリスク(*)を打てば,全てのユーザデータを検索・表示できます.

検索画面

ユーザーの詳細画面の例

4. ※LDAPに登録しておいたユーザー属性値をKeycloak側でも表示するようにしたい場合

  • 下記のようにユーザー詳細画面に,LDAP側で登録しておいた属性値を表示する方法を説明します.

  • User federation(ユーザー・フェデレーション)画面に移動し,対象のフェーデレーションを選択します.

  • その後,Mappers(マッパー)を選択します.

  • Add mapperをクリックすると,下記のような画面が表示されます.

主な変数に関しては,下記のように設定しました.

  • Name(クライアント・スコープの名前):Mapperの名前.追加するLDAPの属性名と同じにします.

  • Mapper type(マッパータイプ)user-attribute-ldap-mapperを選択します.

  • User Model Attribute(Keycloak側のユーザーで表示される属性名):追加するLDAPの属性名と同じにします.(※ LDAPにおけるuid属性をKeycloak側,つまりUser Model AttributeではemployeeIDとして表現・表示することができたりします)

  • LDAP Attribute:追加したいLDAP属性を設定します.

  • それ以外の変数(Read OnlyAlways Read Value From LDAPIs Mandatory In LDAPに関しては,状況に合わせて設定してください)

  • 私のほうでは,下記のように設定しました.

  • Read OnlyOn

  • Always Read Value From LDAPOn

  • Is Mandatory In LDAPOff

  • Attribute default value:空白

  • Force a Default ValueOn

  • Is Binary Attribute:基本,Off.Keycloakのユーザにバイナリーデータを追加する場合は,On

Discussion