Как избежать простого текстового пароля LDAP в весенней безопасности?

Мне только что удалось заставить работать 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, и мы должны были указать имя пользователя и пароль базы данных. Это неправда, имя менеджера и пароль не требуются.


person gfytd    schedule 27.11.2015    source источник


Ответы (1)


Причина, по которой вы можете хранить rootpw как SSHA на сервере LDAP, заключается в том, что ему не нужно знать ваш исходный пароль для его проверки — для этого достаточно дайджеста (в данном случае SSHA — защищенного хэша с солью). Однако клиенту необходимо отправить исходный пароль, чтобы сервер мог вычислить хэш и сравнить его с сохраненным.

Spring мог бы в лучшем случае предложить какое-то шифрование для хранения паролей на клиенте, но я с этим не знаком.

EDIT: StackOverflow Шифрование пароля в Spring файл конфигурации ссылается на это: http://www.jasypt.org/spring3.html< /а>

person Vilmantas Baranauskas    schedule 27.11.2015
comment
Хорошо, дайджест, возможно, не очень хорошая идея, но я все еще надеюсь, что Spring Security может предложить двунаправленную криптографию, чтобы я мог поместить зашифрованный пароль в springsecurity.xml, а Spring Security могла автоматически расшифровать его и отправить в LDAP. - person gfytd; 27.11.2015