Я пытаюсь заставить Spring Security 3.05 работать с модифицировал UserDetailsContextMapper, чтобы я мог получить дополнительную информацию из LDAP, как мне нужно, задача, которая кажется довольно простой, но безуспешной.
Я настроил Spring Security для использования аутентификации LDAP со следующими bean-компонентами:
<bean id="contextSource"
class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
<constructor-arg value="ldaps://192.168.1.102:636" />
<property name="userDn" value="manager" />
<property name="password" value="password" />
</bean>
<bean id="ldapAuthProvider"
class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider">
<constructor-arg>
<bean class="org.springframework.security.ldap.authentication.BindAuthenticator">
<constructor-arg ref="contextSource" />
<property name="userSearch">
<bean id="userSearch" class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
<constructor-arg index="0" value="" />
<constructor-arg index="1" value="(mail={0})" />
<constructor-arg index="2" ref="contextSource" />
</bean>
</property>
</bean>
</constructor-arg>
<property name="userDetailsContextMapper" ref="myContextMapper" />
</bean>
Однако, хотя я определил myContextMapper
как:
<bean id="myContextMapper" class="com.mypackage.MyLDAPUserDetailsMapper">
<property name="rolePrefix" value="TEST_PREFIX" />
</bean>
, он не работает. Это означает, что настраиваемый сопоставитель игнорируется (я не получаю никаких отладочных данных).
ps applicationContext-security.xml можно увидеть ниже, и кроме настраиваемого UserDetailsMapper, который был проигнорирован, проверка подлинности и назначение ролей работают нормально.
<authentication-manager>
<ldap-authentication-provider server-ref="contextSource"/>
</authentication-manager>