我正在开始一个关于Groovy和Grails的新项目。我现在正在处理身份验证部分,因为我们有一个LDAP服务器,我想使用LDAP进行身份验证。我开始设置我的环境,我使用的是SpringSource Tool Suite和 Grails 1.3.5 。当我开始使用身份验证部分时,我安装了两个插件:
我还为LDAP插件运行了“s2 quickstart”命令。
一切看起来都很棒,我可以使用LoginController和LogoutController,我可以保护网页,只有在登录时才能看到它。我是通过在BootStrap.groovy创建用户来实现的。
我还在Config.groovy中配置了所有LDAP和Spring Security Core参数以及我们的LDAP服务器的相应值:
grails.plugins.springsecurity.ldap.context.managerDn
grails.plugins.springsecurity.ldap.context.managerPassword
grails.plugins.springsecurity.ldap.context.server
grails.plugins.springsecurity.ldap.authorities.groupSearchBase
grails.plugins.springsecurity.ldap.search.base
grails.plugins.springsecurity.userLookup.userDomainClassName
grails.plugins.springsecurity.userLookup.authorityJoinClassName
grails.plugins.springsecurity.authority.className
但是,我不知道如何测试LDAP服务器正在进行身份验证。我确定它没有使用LDAP,因为当我在应用程序运行时进入“登录”框并尝试使用我通常用于LDAP服务器的用户名和密码进行身份验证时,它说它无法找到用户。如果我尝试使用我在BootStrap.groovy上创建的用户进行身份验证,我可以登录,但我猜这个用户只是在本地创建,而且是暂时的。
Groovy和Grails的事情在背景上做了很多事情,在开始时很难理解在哪里配置所有内容。
提前感谢您的帮助
编辑:我一直在寻找有关如何使用这些插件的信息,但我没有找到任何记录良好的信息,我找到了有关Acegi的信息,但该插件不受支持不再,这就是我在这里问的原因
编辑:阅读本文(我会看看是否可以使用LDAP):http://blog.springsource.com/2010/08/11/simplified-spring-security-with-grails/
答案 0 :(得分:4)
1.如何将身份验证提供程序设置为LDAP服务器?
我很确定这是激活LDAP身份验证的Config.groovy条目。
grails.plugins.springsecurity.providerNames = ['ldapAuthProvider',
'anonymousAuthenticationProvider',
'rememberMeAuthenticationProvider']
2.在运行“s2快速启动”后安装安全核心和ldap插件后,我还需要做些什么?
我发现这个讨论非常有用:CustomUserDetailsService。结果是这个方法在UserDetailsContextMapper:
的扩展中UserDetails mapUserFromContext(org.springframework.ldap.core.DirContextOperations ctx,
java.lang.String username,
java.util.Collection<GrantedAuthority> authority) {
User.withTransaction { status ->
def user = getUser(ctx) // Creates and saves a MyUser domain class instance
def userDetails = new MyUserDetails(
username,
authority ?: NO_ROLES,
user.id,
user.name,
user.mail)
userDetails.fullname = user.name
userDetails.email = user.mail
return userDetails
}
}
我认为这个resources.groovy条目是必要的:
beans = {
ldapUserDetailsMapper(MyUserDetailsContextMapper) {
}
答案 1 :(得分:0)
这两个插件在以下位置都有相当多的文档:
http://burtbeckwith.github.com/grails-spring-security-core/docs/manual/index.html http://burtbeckwith.github.com/grails-spring-security-ldap/docs/manual/index.html