KeycloakとOpenLDAPを連携する.
はじめに
KeycloakとOpenLDAPを連携し,Keycloak側でもOpenLDAP側に登録しているデータを閲覧できるようにする方法を説明します.
前提
- OS:Ubuntu
- Keycloak:25.04
- OpenLDAPにいくつかデータを登録済み
手順
1. realm(レルム)を新たに作成
- 適当に名前を決めます.
- 以後,新たに作成したこのrealm内でLDAPの連携を行います.
Configure(設定)
のUser federation(ユーザー・フェデレーション)
に,ldap設定を追加する.
2.
User federation
→ Add Ldap providers
をクリック
2.1 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 Only
,Always Read Value From LDAP
,Is Mandatory In LDAP
に関しては,状況に合わせて設定してください) -
私のほうでは,下記のように設定しました.
-
Read Only
:On
-
Always Read Value From LDAP
:On
-
Is Mandatory In LDAP
:Off
-
Attribute default value
:空白 -
Force a Default Value
:On
-
Is Binary Attribute
:基本,Off
.Keycloakのユーザにバイナリーデータを追加する場合は,On
Discussion