概要
Fess はLDAP(Lightweight Directory Access Protocol)サーバーとの統合をサポートしており、 エンタープライズ環境での認証とユーザー管理を実現できます。
LDAP統合により:
Active DirectoryやOpenLDAPでのユーザー認証
グループベースのアクセス制御
ユーザー情報の自動同期
が可能になります。
対応LDAPサーバー
Fess は以下のLDAPサーバーとの統合をサポートしています:
Microsoft Active Directory
OpenLDAP
389 Directory Server
Apache Directory Server
その他のLDAP v3互換サーバー
前提条件
LDAPサーバーへのネットワークアクセス
LDAP検索用のサービスアカウント(バインドDN)
LDAPの構造(ベースDN、属性名など)の理解
基本設定
app/WEB-INF/conf/system.properties に以下の設定を追加します。
LDAP接続設定
# LDAP認証を有効にする
ldap.admin.enabled=true
# LDAPサーバーのURL
ldap.provider.url=ldap://ldap.example.com:389
# セキュア接続(LDAPS)の場合
# ldap.provider.url=ldaps://ldap.example.com:636
# ベースDN
ldap.base.dn=dc=example,dc=com
# バインドDN(サービスアカウント)
ldap.security.principal=cn=fess,ou=services,dc=example,dc=com
# バインドパスワード
ldap.admin.security.credentials=your_password
ユーザー検索設定
# ユーザー検索フィルター
ldap.account.filter=(uid={0})
グループ検索設定
# グループ検索フィルター
ldap.group.filter=(member={0})
Active Directory設定
Microsoft Active Directory向けの設定例です。
基本設定
ldap.admin.enabled=true
ldap.provider.url=ldap://ad.example.com:389
ldap.base.dn=dc=example,dc=com
# サービスアカウント(UPN形式)
ldap.security.principal=fess@example.com
ldap.admin.security.credentials=your_password
# ユーザー検索
ldap.account.filter=(sAMAccountName={0})
# グループ検索
ldap.group.filter=(member={0})
Active Directory固有の設定
# memberOf属性を使用(入れ子グループの解決)
ldap.group.filter=(member:1.2.840.113556.1.4.1941:={0})
OpenLDAP設定
OpenLDAP向けの設定例です。
ldap.admin.enabled=true
ldap.provider.url=ldap://openldap.example.com:389
ldap.base.dn=dc=example,dc=com
# サービスアカウント
ldap.security.principal=cn=admin,dc=example,dc=com
ldap.admin.security.credentials=your_password
# ユーザー検索
ldap.account.filter=(uid={0})
# グループ検索
ldap.group.filter=(memberUid={0})
セキュリティ設定
LDAPS(SSL/TLS)
暗号化された接続を使用:
# LDAPSを使用
ldap.provider.url=ldaps://ldap.example.com:636
自己署名証明書の場合は、Java truststore に証明書をインポート:
keytool -import -alias ldap-server -keystore $JAVA_HOME/lib/security/cacerts \
-file ldap-server.crt
パスワードの保護
パスワードを環境変数で設定:
ldap.admin.security.credentials=${LDAP_PASSWORD}
フェイルオーバー
複数のLDAPサーバーへのフェイルオーバー:
# スペース区切りで複数のURLを指定
ldap.provider.url=ldap://ldap1.example.com:389 ldap://ldap2.example.com:389
トラブルシューティング
接続エラー
症状: LDAP接続に失敗する
確認事項:
LDAPサーバーが起動しているか
ファイアウォールでポートが開いているか(389または636)
URLが正しいか(
ldap://またはldaps://)バインドDNとパスワードが正しいか
認証エラー
症状: ユーザー認証に失敗する
確認事項:
ユーザー検索フィルターが正しいか
ユーザーが検索ベースDN内に存在するか
ユーザー名属性が正しいか
グループが取得できない
症状: ユーザーのグループが取得できない
確認事項:
グループ検索フィルターが正しいか
グループのメンバーシップ属性が正しいか
グループが検索ベースDN内に存在するか
デバッグ設定
詳細なログを出力:
app/WEB-INF/classes/log4j2.xml:
<Logger name="org.codelibs.fess.ldap" level="DEBUG"/>
参考情報
ロールベース検索の設定 - ロールベースのアクセス制御
Windows統合認証によるSSO設定 - SPNEGO(Kerberos)認証
ユーザー - ユーザー管理ガイド