17.3. 설정

Acegi Security에는 LDAP을 이용하는 연락처 예제 애플리케이션을 제공하고 있다. 여러분은 이 예제에서 빈과 필터 설정을 복사하여 여러분만의 애플리케이션을 설정하는 시작점으로 활용할 수 있다.

위에서 언급한 빈을 사용하는 일반적인 설정은 아래와 같을 것이다:

    <bean id="initialDirContextFactory"
            class="org.acegisecurity.ldap.DefaultInitialDirContextFactory">
      <constructor-arg value="ldap://monkeymachine:389/dc=acegisecurity,dc=org"/>
      <property name="managerDn"><value>cn=manager,dc=acegisecurity,dc=org</value></property>
      <property name="managerPassword"><value>password</value></property>
    </bean>

    <bean id="userSearch"
            class="org.acegisecurity.ldap.search.FilterBasedLdapUserSearch">
      <constructor-arg index="0">
        <value></value>
      </constructor-arg>
      <constructor-arg index="1">
        <value>(uid={0})</value>
      </constructor-arg>
      <constructor-arg index="2">
        <ref local="initialDirContextFactory" />
      </constructor-arg>
      <property name="searchSubtree">
        <value>true</value>
      </property>
    </bean>

    <bean id="ldapAuthProvider"
            class="org.acegisecurity.providers.ldap.LdapAuthenticationProvider">
      <constructor-arg>
        <bean class="org.acegisecurity.providers.ldap.authenticator.BindAuthenticator">
           <constructor-arg><ref local="initialDirContextFactory"/></constructor-arg>
           <property name="userDnPatterns"><list><value>uid={0},ou=people</value></list></property>
        </bean>
      </constructor-arg>
      <constructor-arg>
        <bean class="org.acegisecurity.providers.ldap.populator.DefaultLdapAuthoritiesPopulator">
           <constructor-arg><ref local="initialDirContextFactory"/></constructor-arg>
           <constructor-arg><value>ou=groups</value></constructor-arg>
           <property name="groupRoleAttribute"><value>ou</value></property>
        </bean>
      </constructor-arg>
    </bean>

          

위 설정은 제공자를 설정하여 ldap://monkeymachine:389/dc=acegisecurity,dc=org라는 URL을 통해 LDAP 서버에 연결하도록 한다. 인증은 uid=<user-login-name>,ou=people,dc=acegisecurity,dc=org라는 DN을 통해 바인딩을 시도함으로써 수행될 것이다. 인증이 성공적으로 완료된 후 역할들은 기본 필터(member=<user's-DN>)를 이용하는 ou=groups,dc=acegisecurity,dc=org라는 DN들을 검색함으로써 사용자에게 할당될 것이다. 역할의 이름은 각각의 일치하는 것들의 “ou”로부터 획득될 것이다.

또한 위 설정에는 사용자 검색 객체에 대한 설정도 포함되어 있는데, 사용자 검색 객체는 필터(uid=<user-login-name>)를 사용하고 있다. 이는 DN-패턴 대신 사용될 수 있으며(아니면 그것에 추가하거나), 인증자의 userSearch 프로퍼티를 설정함으로써 가능하다. 그리고 나서 인증자는 다음 사용자로 바인딩을 시도하기 전에 검색 객체를 호출하여 적절한 사용자의 DN을 획득한다.