Grails с аутентификацией ldap

Я пытаюсь интегрировать приложение Grails с аутентификацией ldap, используя подключаемый модуль grails spring ldap. вот мой конфиг

    grails.plugin.springsecurity.providerNames = ['ldapAuthProvider', 'anonymousAuthenticationProvider']
grails.plugin.springsecurity.ldap.context.managerDN = 'CN=acc,DC=two,DC=three'
grails.plugin.springsecurity.ldap.context.managerPassword = 'correctpassword'
grails.plugin.springsecurity.ldap.context.server = 'ldaps://server:636'
grails.plugin.springsecurity.ldap.authorities.ignorePartialResultException = true
grails.plugin.springsecurity.ldap.search.base = 'OU=one,DC=two,DC=three'
grails.plugin.springsecurity.ldap.search.filter='sAMAccountName={0}'
grails.plugin.springsecurity.ldap.search.searchSubtree = true
grails.plugin.springsecurity.ldap.auth.hideUserNotFoundExceptions = false
grails.plugin.springsecurity.ldap.authorities.prefix = "ROLE_"
grails.plugin.springsecurity.ldap.authorities.defaultRole = "ADMIN"

каждый раз, когда я пытался войти, я получал ошибку

    pErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1 ]; nested exception is javax.naming.Authentic
ationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e,
 v1db1 ]

я проверил, и это означает, что учетные данные недействительны, но это не так. Затем я проверяю, что произойдет, если я изменю correctpassword на неправильный, и произойдет та же ошибка, что-то не так с моей конфигурацией? отсутствует какой-либо атрибут? Мой контроллер входа в систему является контроллером по умолчанию, я использую аннотации secured для контроллеров с ограниченным доступом


person whd    schedule 06.06.2016    source источник
comment
Попробуйте изменить search.filter на что-то вроде grails.plugin.springsecurity.ldap.search.filter='(&(objectCategory=user)(sAMAccountName={0}))', где objectCategory — это правильная категория из вашего объявления.   -  person droggo    schedule 07.06.2016
comment
хорошо, сделаю, но поиск по ldap с фильтром sAMAccountName=name дает правильные результаты   -  person whd    schedule 07.06.2016
comment
Это не должно иметь значения, так как это просто добавляет дополнительный фильтр, но это решило ту же проблему для нас. Возможно, скобки или что-то еще нужны только для sAMAccountName. Извините, если это не поможет вам.   -  person droggo    schedule 07.06.2016
comment
@droggo не могли бы вы опубликовать свой комментарий в качестве ответа? это было хорошее решение, в любом случае, кто мог знать? на официальной странице плагина Grails фильтры ldap безопасности spring без скобок.   -  person whd    schedule 07.06.2016


Ответы (1)


Попробуйте изменить grails.plugin.springsecurity.ldap.search.filter=sAMAccountName={0} на что-то вроде grails.plugin.springsecurity.ldap.search.filter='(&(objectCategory=user)(sAMAcc‌​ountName={0})), где objectCategory — это правильная категория из вашего объявления.

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

person droggo    schedule 07.06.2016