我正在努力让LDAP插件正常工作。我只想对Active Directory进行LDAP身份验证,但似乎我遗漏了一些东西。
配置
grails {
plugins {
springsecurity {
userLookup.userDomainClassName = 'de.ac.dmf.security.User'
userLookup.authorityJoinClassName = 'de.ac.dmf.security.UserRole'
authority.className = 'de.ac.dmf.security.Role'
ldap {
context.managerDn = 'CN=dmf Systemuser,CN=Users,DC=dmf,DC=local'
context.managerPassword = 'Password1'
context.server = 'ldap://192.168.100.133:389/'
authorities{
groupSearchBase ='OU=Groups'
groupSearchFilter = '(member={0})'
retrieveGroupRoles = false
retrieveDatabaseRoles = false
defaultRole = 'USER'
ignorePartialResultException = true
}
search{
base = 'CN=Users,DC=dmf,DC=local'
filter = '(sAMAccountName={0})'
searchSubtree = true
}
// mapper.userDetailsClass = 'user'
// auth.hideUserNotFoundExceptions = false
useRememberMe = false
}
}
}
}
每次登录时我都会遇到此异常
2011-04-29 08:49:09,129 [http-8080-1] DEBUG springsecurity.RequestHolderAuthenticationFilter - Authentication request failed: org.springframework.security.authentication.AuthenticationServiceException: [LDAP: error code 32 - 0000208D: NameErr: DSID-031001E4, problem 2001 (NO_OBJECT), data 0, best match of:
'CN=Users,DC=dmf,DC=local'; remaining name 'CN=Users,DC=dmf,DC=local'
我尝试进行身份验证的AD中的哪个用户无关紧要。我的配置错了吗?
我正在使用
答案 0 :(得分:0)
您确定基本配置吗?看起来OU=Users
可以代替CN=Users
。解决这个问题的最简单方法是使用广告资源管理器(http://technet.microsoft.com/de-de/sysinternals/bb963907)等工具,连接到您的AD,浏览用户并查看路径给用户......
答案 1 :(得分:0)
尝试使用:
filter = '(&(sAMAccountName={0})(objectclass=user))'
这适用于我们的AD。
答案 2 :(得分:0)
您缺少提供者名称列表。
grails.plugins.springsecurity.providerNames = ['ldapAuthProvider',
'anonymousAuthenticationProvider',
'rememberMeAuthenticationProvider']