Grails与ldap身份验证

Grails与ldap身份验证,grails,ldap,spring-security-ldap,Grails,Ldap,Spring Security Ldap,我正在尝试使用grails spring ldap插件将grails应用程序与ldap身份验证集成。这是我的确认 grails.plugin.springsecurity.providerNames = ['ldapAuthProvider', 'anonymousAuthenticationProvider'] grails.plugin.springsecurity.ldap.context.managerDN = 'CN=acc,DC=two,DC=three' grails.pl

我正在尝试使用grails spring ldap插件将grails应用程序与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
更改为InCorrect one会发生什么,并且会发生相同的错误,我的配置是否有问题?有没有丢失任何属性?我的登录控制器是默认控制器,我使用
secured
为访问受限的控制器添加注释尝试将
grails.plugin.springsecurity.ldap.search.filter=sAMAccountName={0}
更改为类似
grails.plugin.springsecurity.ldap.search.filter='(&(objectCategory=user)(sAMAcc‌​ountName={0}))
其中objectCategory是广告中的正确类别


这不应该有什么区别,因为这只是增加了额外的过滤器,但它为我们解决了同样的问题。此属性可能需要括号或类别筛选器

尝试将
grails.plugin.springsecurity.ldap.search.filter=sAMAccountName={0}
更改为类似于
grails.plugin.springsecurity.ldap.search.filter='(&(objectCategory=user)(sAMAcc)的内容‌​ountName={0}))
其中objectCategory是广告中的正确类别


这不应该有什么区别,因为这只是增加了额外的过滤器,但它为我们解决了同样的问题。此属性可能需要括号或类别筛选器

尝试将
search.filter
更改为类似于
grails.plugin.springsecurity.ldap.search.filter='(&(objectCategory=user)(sAMAccountName={0}))
的内容,其中objectCategory是ADok中的正确类别,我会,但是在ldap中,filter sAMAccountName=name提供了正确的结果,这不会有什么区别,因为这只是添加了额外的过滤器,但它为我们解决了同样的问题。可能只是sAMAccountName需要括号或其他东西。如果对你没有帮助,很抱歉。@Drogo你能把你的评论作为答案吗?这是个很好的解决方案,反正谁知道呢?在grails插件spring security的官方页面上,ldap筛选器没有括号。请尝试将
search.filter
更改为类似于
grails.plugin.springsecurity.ldap.search.filter='(&(objectCategory=user)(sAMAccountName={0}))
的内容,其中objectCategory是ADok中的正确类别,我会,但是在ldap中,filter sAMAccountName=name提供了正确的结果,这不会有什么区别,因为这只是添加了额外的过滤器,但它为我们解决了同样的问题。可能只是sAMAccountName需要括号或其他东西。如果对你没有帮助,很抱歉。@Drogo你能把你的评论作为答案吗?这是个很好的解决方案,反正谁知道呢?在grails插件spring security的官方页面上,ldap过滤器没有括号。