带有 ldap 身份验证的 Grails

Grails with ldap authentication

我正在尝试使用 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 更改为 inncorect one 会发生什么,并且发生同样的错误,我的配置有问题吗?是否缺少任何属性?我的登录控制器是默认控制器,我对具有受限访问权限的控制器使用 secured 注释

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

这应该没什么区别,因为这只是添加了额外的过滤器,但它为我们解决了同样的问题。此 属性

可能需要括号或类别过滤器