子ページ
  • 複数台のLDAPサーバを参照するための方法

比較バージョン

キー

  • この行は追加されました。
  • この行は削除されました。
  • 書式設定が変更されました。

ここでは2つの方法をご紹介します。

目次

複数台LDAPサーバ向けのLDAPプロキシサーバを使用する

...

IdPの設定で複数のLDAPツリー、或いはLDAPサーバを参照する例がShibboleth Wiki:LDAPAuthnConfigurationの"DNResolution"の項にあります。
LDAPサーバが一台のみで複数のLDAPツリーがサブツリーの関係にある環境では、"DNResolution"項の"Single Directory with multiple branches"-"Extensible Matching"のようにidp.authn.LDAP.userFilteridp.authn.LDAP.baseDNidp.authn.LDAP.subtreeSearchの変更で対応が可能です。
LDAPサーバが複数、或いは複数のLDAPツリーがサブツリーとして扱えない環境では、"DNResolution"項の"Multiple Directories"-"Aggregate DN Resolver"、或いは"DNResolution"項の"Single Directory with multiple branches"-"Aggregate DN Resolver"のようにldap-authn-config.xmlでの対応が必要です。
また、上記Shibboleth Wiki:LDAPAuthnConfigurationの例は認証処理のための設定であり、SPへ送出する属性をLDAPから取得する場合は別にattribute-resolver.xmlを変更します。
例の内、ldap-authn-config.xmlを変更するケースでは、以下のようにattribute-resolver.xmlを編集し複数のLDAP DataConnectorを利用するよう変更が必要です。
idp.authn.LDAP.{userFilter,baseDN,subtreeSearch}の変更により対応したケースでは、一つのLDAP DataConnectorでそれらを参照できる為attributeDataConnectorでそれらを参照できるためattribute-resolver.xmlの変更は不要です。

パネル
title/opt/shibboleth-idp/conf/attribute-resolver.xml の設定

    <resolver:DataConnector id="myLDAP" xsi:type="dc:LDAPDirectory"
        ldapURL="%{idp.attribute.resolver.LDAP.ldapURL}"
        baseDN="%{idp.attribute.resolver.LDAP.baseDN1}"
← "1"を挿入
        principal="%{idp.attribute.resolver.LDAP.bindDN}"
        principalCredential="%{idp.attribute.resolver.LDAP.bindDNCredential}"
        noResultIsError="True" 
← 追加
        useStartTLS="%{idp.attribute.resolver.LDAP.useStartTLS:true}">
        <resolver:FailoverDataConnector ref="myLDAP2" />  
← 追加(dcより前に追加する必要があります)
        <dc:FilterTemplate>
            <![CDATA[
                %{idp.attribute.resolver.LDAP.searchFilter}
            ]]>
        </dc:FilterTemplate>
        <dc:StartTLSTrustCredential id="LDAPtoIdPCredential" xsi:type="sec:X509ResourceBacked">
            <sec:Certificate>%{idp.attribute.resolver.LDAP.trustCertificates}</sec:Certificate>
        </dc:StartTLSTrustCredential>
    </resolver:DataConnector>
   
↓以下の行を追加
    <resolver:DataConnector id="myLDAP2" xsi:type="dc:LDAPDirectory"

        ldapURL="%{idp.attribute.resolver.LDAP.ldapURL}"
        baseDN="%{idp.attribute.resolver.LDAP.baseDN2}"
        principal="%{idp.attribute.resolver.LDAP.bindDN}"
        principalCredential="%{idp.attribute.resolver.LDAP.bindDNCredential}"
        noResultIsError="True"
        useStartTLS="%{idp.attribute.resolver.LDAP.useStartTLS:true}">
        <dc:FilterTemplate>
            <![CDATA[
                %{idp.attribute.resolver.LDAP.searchFilter}
            ]]>
        </dc:FilterTemplate>
        <dc:StartTLSTrustCredential id="LDAPtoIdPCredential" xsi:type="sec:X509ResourceBacked">
            <sec:Certificate>%{idp.attribute.resolver.LDAP.trustCertificates}</sec:Certificate>
        </dc:StartTLSTrustCredential>
    </resolver:DataConnector>  ← 追加DataConnector>

DataConnector "myLDAP" にデータが見つからない場合エラーとして扱うようにし、フェイルオーバー処理としてDataConnector "myLDAP2" から改めてデータを検索する設定になります。
ldap-authn-config.xml、attribute-resolver.xmlでLDAPサーバごとに指定したidp.authn.LDAP.baseDN[12]やidp.attribute.resolver.LDAP.baseDN[12]はldap.propertiesで定義を追加してください。

...