LDAP(Lightweight Directory Access Protocol)は、統合されたディレクトリサービスへのアクセスに使用します。これにより、複数のアプリケーションからユーザーアカウントにアクセスできるようになるので、ユーザーアカウントの管理に必要な作業を削減できます。このような LDAP サーバーの一例として Active Directory があります。多くの場合、LDAP はシングルサインオン(ユーザーが 1 回ログインすると複数のアプリケーションにアクセスできる機能)を実現するために使用されます。
リポジトリに保存されている LDAP アカウントの詳細を使用して、LDAP サーバーとリポジトリの間でユーザーアカウントを同期できます。これにより、アカウントをリポジトリグループに割り当てて、必要な権限や特別な権限を付与することができます。
リポジトリでは LDAP 認証を使用してこれらのユーザーを認証します。認証の際は、検証用に LDAP サーバーに渡される資格情報が使用されます。この認証は、リポジトリへのアクセスを許可する前におこなう必要があります。パフォーマンスを向上させるために、検証が成功した資格情報をリポジトリでキャッシュできます。有効期限のタイムアウトを使用すると、適切な期間が経過した後に再検証が行われます。
LDAP サーバーからアカウントが削除されると、検証は行われないので、リポジトリへのアクセスは拒否されます。リポジトリに保存された LDAP アカウントの詳細をパージすることもできます。
このようなアカウントはユーザーに対して透過的に使用され、LDAP から作成されたユーザーアカウントやグループアカウントとリポジトリで作成されたユーザーアカウントやグループアカウントの違いはユーザーにはわかりません。
AEM 6 の LDAP のサポートには、以前のバージョンとは異なるタイプの設定が必要な新しい実装が付属します。
すべての LDAP 設定を OSGi 設定として使用できるようになりました。これらは Web 管理コンソールを使用して設定できます。
http://serveraddress:4502/system/console/configMgr
LDAP と AEM を連携させるには、次の 3 つの OSGi 設定を作成する必要があります。
- LDAP Identity Provider(IDP)
- Sync Handler
- External Login Module
注意:
External Login Module について詳しくは、Oak の External Login Module - LDAP との認証および詳細(英語)をご覧ください。
LDAP Identity Provider は、LDAP サーバーからのユーザーの取得方法を定義するために使用します。
このプロバイダーは、管理コンソールの Apache Jackrabbit Oak LDAP Identity Provider という名前の下にあります。
LDAP Identity Provider では次の設定オプションを使用できます。
LDAP Provider Name | この LDAP プロバイダー設定の名前 |
LDAP Server Hostname | LDAP サーバーのホスト名 |
LDAP Server Port | LDAP サーバーのポート |
Use SSL | SSL(LDAP)接続を使用するかどうかを示します。 |
Use TLS | 接続時に TLS を開始するかどうかを示します。 |
Disable certificate checking | サーバー証明書検証を無効にするかどうかを示します。 |
Bind DN | 認証用のユーザーの DN。このオプションを空のままにすると、匿名バインドが実行されます。 |
Bind Password | 認証用のユーザーのパスワード |
Search timeout | 検索がタイムアウトするまでの時間 |
Admin pool max active | 管理接続プールの最大アクティブサイズ |
User pool max active | ユーザー接続プールの最大アクティブサイズ |
User base DN | ユーザー検索用の DN |
User object classes | ユーザーエントリに含まれている必要があるオブジェクトクラスのリスト |
User id attribute | ユーザー ID が含まれている属性の名前 |
User extra filter | ユーザーを検索するときに使用する追加 LDAP フィルター。最終的なフィルターは、'(&(<idAttr>=<userId>)(objectclass=<objectclass>)<extraFilter>)' (user.extraFilter)のような形式になります。 |
User DN paths | 中間パスの一部の計算に DN が使用されるかどうかを制御します。 |
Group base DN | グループ検索用のベース DN |
Group object classes | グループエントリに含まれている必要があるオブジェクトクラスのリスト |
Group name attribute | グループ名が含まれている属性の名前 |
Group extra filter | グループを検索するときに使用する追加 LDAP フィルター。最終的なフィルターは、'(&(<nameAttr>=<groupName>)(objectclass=<objectclass>)<extraFilter>)'のような形式になります。 |
Group DN paths | 中間パスの一部の計算に DN が使用されるかどうかを制御します。 |
Group member attribute | グループのメンバーが含まれているグループ属性 |
Sync Handler は、Indentity Provider のユーザーとグループをリポジトリと同期する方法を定義します。
このハンドラーは、管理コンソールの Apache Jackrabbit Oak Default Sync Handler という名前の下にあります。
Sync Handler では次の設定オプションを使用できます。
Sync Handler Name | 同期設定の名前 |
User Expiration Time | 同期されたユーザーが期限切れになるまでの期間 |
User auto membership | 同期されたユーザーが自動的に追加されるグループのリスト |
User property mapping | 外部プロパティからのローカルプロパティのマッピング定義をリストします。 |
User Path Prefix | 新規ユーザーの作成時に使用されるパスプレフィックス |
User Membership Expiration | メンバーシップが期限切れになるまでの時間 |
User membership nesting depth | メンバーシップ関係が同期されるときのグループのネストの最大の深さを返します。値 0 を指定すると、グループのメンバーシップのルックアップが事実上無効になります。値 1 を指定すると、ユーザーの直接のグループのみが追加されます。ユーザーのメンバーシップの先祖を同期する際にのみ個々のグループを同期する場合、この値は有効ではありません。 |
Group Expiration Time | 同期されたグループが期限切れになるまでの期間 |
Group auto membership | 同期されたグループが自動的に追加されるグループのリスト |
Group property mapping | 外部プロパティからのローカルプロパティのマッピング定義をリストします。 |
Group path prefix | 新規グループの作成時に使用されるパスプレフィックス |
注意:
Apache Jackrabbit Oak External Login Module は、Java 認証・承認サービス(JAAS)の仕様を実装します。詳しくは、Oracle 公式の Java セキュリティリファレンスガイドを参照してください。
JAAS Ranking | このログインモジュールエントリのランキング(並べ替え順序)の指定。エントリは降順に並べ替えられます(ランクの高い設定が最初にきます)。 |
JAAS Control Flag | LoginModule が REQUIRED、REQUISITE、SUFFICIENT または OPTIONAL であるかどうかを指定するプロパティ。これらのフラグの意味について詳しくは、JAAS 設定のドキュメントを参照してください。 |
JAAS Realm | LoginModule の登録対象の領域名(またはアプリケーション名)。領域名を指定しない場合は、Felix JAAS 設定に指定されているように、LoginModule はデフォルトの領域に登録されます。 |
Identity Provider Name | Identity Provider の名前 |
Sync Handler Name | Sync Handler の名前 |
注意:
AEM インスタンスで複数の LDAP 設定を使用する場合は、設定ごとに Identity Provider と Sync Handler を個別に作成する必要があります。
-
LDAP Identity Provider を設定する場合は、「Use SSL」チェックボックスまたは「Use TLS」チェックボックスをオンにします。
LDAP Identity Provider と External Login Module の両方に対してデバッグログを有効にして、接続の問題のトラブルシューティングをおこなうことができます。
デバッグログを有効にするには、次の手順をおこなう必要があります。
- Web 管理コンソールに移動します。
- 「Apache Sling Logging Logger Configuration」を探し、次のオプションを使用して 2 つのロガーを作成します。
- Log level:Debug
- Log File:logs/ldap.log
- Message Pattern:{0,date,dd.MM.yyyy HH:mm:ss.SSS} *{4}* [{2}] {3} {5}
- Logger:org.apache.jackrabbit.oak.security.authentication.ldap
- Log level:Debug
- Log File:logs/external.log
- Message Pattern:{0,date,dd.MM.yyyy HH:mm:ss.SSS} *{4}* [{2}] {3} {5}
- Logger:org.apache.jackrabbit.oak.spi.security.authentication.external
LDAP で同期されたユーザーは、AEM の別のグループに含めることが可能です。同期プロセスの一部として AEM に追加される外部 LDAP グループにも含めることができますが、別に追加される、元の LDAP グループに関連するスキームに含まれないグループに含めることもできます。
ほとんどの場合は、ローカルの AEM 管理者またはその他の ID プロバイダーによって追加されるグループになります。
ユーザーが LDAP サーバー上のグループから削除されると、その変更は同期時に AEM 側にも反映されます。ただし、LDAP によって追加されなかったユーザーのその他のグループへの関連付けはそのまま維持されます。
AEM は rep:externalId プロパティを使用して、外部グループからのユーザーのパージを検出および処理します。このプロパティは Sync Handler によって同期されたすべてのユーザーとグループに自動的に追加されます。このプロパティには元の ID プロバイダーの情報が含まれます。
詳しくは、Apache Oak ドキュメントの ユーザーとグループの同期(英語)を参照してください。