applicationContext-spring-security-ldap.xml 4.15 KB
<?xml version="1.0" encoding="UTF-8"?>
<!--+
	| Application context containing LDAP AuthenticationProvider
	| implementation.
	+-->

<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:security="http://www.springframework.org/schema/security"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:oauth="http://www.springframework.org/schema/security/oauth2"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="
              http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd
              http://www.springframework.org/schema/security/oauth2 http://www.springframework.org/schema/security/spring-security-oauth2.xsd
			   http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
			   http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

	<security:authentication-manager alias="authenticationManager">
		<security:authentication-provider ref="authenticationProvider" />
 	</security:authentication-manager>
 
	<bean id="authenticationProvider"
		class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider">
		<constructor-arg>
      <ref bean="authenticator" />
		</constructor-arg>
		<constructor-arg>
			<ref local="populator" />
		</constructor-arg>
	</bean>

  <bean id="authenticator" class="org.springframework.security.ldap.authentication.PasswordComparisonAuthenticator">
    <constructor-arg>
      <ref local="contextSource" />
    </constructor-arg>
    <property name="passwordEncoder">
      <ref local="passwordEncoder" />
    </property>
    <property name="userSearch">
      <ref local="userSearch" />
    </property>
  </bean>

  <bean id="contextSource" class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
    <constructor-arg value="${contextSource.providerUrl}"/>
    <property name="userDn" value="${contextSource.userDn}"/>
    <property name="password" value="${contextSource.password}"/>
  </bean>

  <!-- be sure to escape ampersands -->
	<bean id="userSearch"
		class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
		<constructor-arg index="0" value="${userSearch.searchBase}" />
		<constructor-arg index="1" value="${userSearch.searchFilter}" />
		<constructor-arg index="2">
			<ref local="contextSource" />
		</constructor-arg>
	</bean>

  <!-- be sure to escape ampersands -->
	<bean id="populator"
		class="org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator">
		<constructor-arg index="0">
			<ref local="contextSource" />
		</constructor-arg>
		<constructor-arg index="1" value="${populator.groupSearchBase}" />
		<property name="groupRoleAttribute" value="${populator.groupRoleAttribute}" />
    <!-- {0} will be replaced with user DN; {1} will be replaced with username -->
		<property name="groupSearchFilter" value="${populator.groupSearchFilter}" />
    <property name="rolePrefix" value="${populator.rolePrefix}" />
    <property name="convertToUpperCase" value="${populator.convertToUpperCase}" />
     <property name="searchSubtree" value="${populator.searchSubtree}" />
	</bean>

	<bean id="userDetailsService"
		class="org.springframework.security.ldap.userdetails.LdapUserDetailsService">
		<constructor-arg>
			<ref local="userSearch" />
		</constructor-arg>
		<constructor-arg>
			<ref local="populator" />
		</constructor-arg>
	</bean>

<!-- other password encoders are:    
 BaseDigestPasswordEncoder, BasePasswordEncoder, LdapShaPasswordEncoder, Md4PasswordEncoder, 
 Md5PasswordEncoder, MessageDigestPasswordEncoder, PlaintextPasswordEncoder, ShaPasswordEncoder
 -->

<bean id="passwordEncoder"
    class="org.springframework.security.authentication.encoding.PlaintextPasswordEncoder" >
  </bean>

  <bean id="propertyPlaceholderConfigurerSecurityLdap" 
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="/WEB-INF/applicationContext-security-ldap.properties" />
  </bean>

</beans>