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을 획득한다.