ここでは2つの方法をご紹介します。
複数台LDAPサーバ向けのLDAPプロキシサーバを使用する
複数台のLDAPサーバ向けにLDAPプロキシサーバを設置し、IdPにはLDAPプロキシサーバを参照させます。
使用するLDAPプロキシサーバの設定方法について、まとめられた資料があります。資料はCentOS 5系で記載されたものであるため、利用するバージョンに合わせて適宜読み替える必要があります。
プロキシサーバを構築する際、ログイン画面で入力するID(Shibboleth内部ではprincipalと表現されます)について、同一のIDが複数のLDAPツリー上に存在しないことを確認してください。同一のIDが存在する場合には、属性取得で問題が発生します。uidがこの条件を満たさない場合は、メールアドレスや学籍番号・教職員番号等、他のLDAP属性を使うことを検討してください。 |
IdPの設定ファイルで複数台LDAPサーバを指定する
IdPの設定で複数のLDAPツリー、或いはLDAPサーバを参照する例がShibboleth Wiki:LDAPAuthnConfigurationの"DNResolution"の項にあります。
LDAPサーバが一台のみで複数のLDAPツリーがサブツリーの関係にある環境ではldap.propertiesのみの変更で対応が可能です。
idp.authn.LDAP.baseDNのサブツリーを検索するようidp.authn.LDAP.subtreeSearchとidp.authn.LDAP.userFilterを設定します。
LDAPサーバが一台であり複数のLDAPツリーがサブツリーの関係にある場合の例
# Search DN resolution, used by anonSearchAuthenticator, bindSearchAuthenticator |
LDAPサーバが複数、或いは複数のLDAPツリーがサブツリーとして扱えない環境では、ldap.propertiesとldap-authn-config.xmlを変更します。
LDAPサーバ/LDAPツリーの数に応じて、ldap.properties内の項目を追加してauthn-ldap-config.xmlでそれらを参照するようにします。
また、前述したShibboleth Wiki:LDAPAuthnConfigurationによる例は認証処理のための設定なので、SPへ送出する属性をLDAPから取得している場合はattribute-resolver.xmlを変更し、ldap.propertiesに追加した項目を参照するためのLDAP DataConnectorを追加します。
LDAPサーバが一台であり複数のLDAPツリーがサブツリーとして扱えない場合の例
<bean name="aggregateAuthenticator" class="org.ldaptive.auth.Authenticator"> |
idp.authn.LDAP.authenticator = aggregateAuthenticator ← ldap-authn-config.xmlに追加したclass="org.ldaptive.auth.Authenticator"のbeanのnameに変更 |
|
LDAPサーバが複数である場合の例
|
|
|
attribute-filter.xmlの変更はDataConnector "myLDAP" にデータが見つからない場合エラーとして扱うようにし、フェイルオーバー処理としてDataConnector "myLDAP2" から改めてデータを検索する設定になります。
前項と同様、同一のIDが2つのLDAPツリー上に存在すると問題になりますので、uidがこの条件を満たさない場合は他のLDAP属性をID(principal)として使うようにしてください。 |