Grails,Spring Security LDAP 插件
Posted
技术标签:
【中文标题】Grails,Spring Security LDAP 插件【英文标题】:Grails, Spring Security LDAP Plugin 【发布时间】:2011-08-15 07:02:37 【问题描述】:我正在尝试使 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 中的哪个用户进行身份验证并不重要。是不是我的配置不对?
我正在使用
Grails 1.3.7 spring-security-core 1.1.2 spring-security-ldap 1.04【问题讨论】:
我的问题是第二个 LDAP 模板已初始化。删除后,我的登录问题就解决了。 【参考方案1】:您确定您的基本配置吗?看起来OU=Users
可以代替CN=Users
工作。解决这个问题的最简单方法是使用广告资源管理器 (http://technet.microsoft.com/de-de/sysinternals/bb963907) 之类的工具,连接到您的广告,浏览到用户并查看路径给用户...
【讨论】:
嗨 Ralf,我已经验证了我的用户的路径。它只是一台基本机器,没有对此进行任何配置,并且在我的测试用例中基本是正确的。 AD 默认有一个 CN=Users,这在第一次遇到时是相当令人惊讶的。【参考方案2】:尝试使用:
filter = '(&(sAMAccountName=0)(objectclass=user))'
这适用于我们的广告。
【讨论】:
应该不需要添加对象类,因为我们知道 sAMAccountname 在 AD 域中是全局唯一的)。 它没有解决我的问题。我仍然无法针对 AD 域进行身份验证。【参考方案3】:您缺少提供者名单。
grails.plugins.springsecurity.providerNames = ['ldapAuthProvider',
'anonymousAuthenticationProvider',
'rememberMeAuthenticationProvider']
【讨论】:
以上是关于Grails,Spring Security LDAP 插件的主要内容,如果未能解决你的问题,请参考以下文章
Grails - grails-spring-security-rest - 无法从 application.yml 加载 jwt 机密
grails-spring-security-rest 插件和悲观锁定
Grails + spring-security-core:用户登录后如何分配角色?