Мне только что удалось заставить работать OpenLDAP + Spring Security, все работает нормально, за исключением одной небольшой проблемы, заключающейся в том, что в spring security xml я должен указать там простой текстовый пароль:
<beans:bean id="ldapContextSource" class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
<beans:constructor-arg value="ldap://153.65.x.y:389/dc=example,dc=com" />
<beans:property name="userDn" value="cn=Manager,dc=example,dc=com" />
<beans:property name="password" value="secret" />
</beans:bean>
Есть ли способ избежать этого?
Когда я настраивал свой OpenLDAP, я мог добавить дайджест вместо обычного текстового пароля в slapd.conf:
rootpw {SSHA}ZMFfVNPAazmLcif1xC2l9y9SFdKd+x4
Поэтому я надеюсь, что весенняя безопасность может сделать то же самое.
ИЗМЕНИТЬ:
Я только что понял, что нет необходимости указывать здесь имя и пароль диспетчера LDAP, просто укажите uri, и этого будет достаточно для работы весенней безопасности:
<beans:bean id="ldapContextSource" class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
<beans:constructor-arg value="ldap://153.65.x.y:389/dc=example,dc=com" />
</beans:bean>
У меня тут возникло некоторое недоразумение. Когда я попытался написать этот пример, довольно много образцов, которые я получил от Google, поместили имя и пароль менеджера в spring security xml. Поэтому я когда-то думал, что это похоже на подключение к базе данных через JDBC, и мы должны были указать имя пользователя и пароль базы данных. Это неправда, имя менеджера и пароль не требуются.