2010-10-27 82 views
4

我开始对Groovy和Grails的一个新项目。我现在正在开发身份验证部分,因为我们有一个LDAP服务器,我想使用LDAP进行身份验证。我开始设置我的环境中,我使用的是SpringSource工具套件和Grails的1.3.5。当我开始与认证工作的一部分我安装了两个插件:如何在Grails上使用LDAP插件?

  • springSecurityCore - 1.0.1
  • springSecurityLdap - 1.0.1

我也跑了 “S2快速启动” 命令为LDAP插入。

一切看起来不错,我可以使用LoginController和LogoutController,我能够保护一个网页,以便它只能在登录时看到。我通过在BootStrap创建一个用户来做到这一点。常规

我也配置所有的LDAP和Spring Security的核心参数在Config.groovy中与我们的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上创建的用户进行身份验证,我可以登录,但我猜测该用户仅在本地创建,并且是暂时的。

  1. 如何将身份验证提供程序设置为LDAP服务器?
  2. 还有什么我已经运行“快速入门S2”之后安装安全核心和LDAP插件后怎么办?

Groovy和Grails的东西使背景上的东西很多,在开始时很难理解在哪里配置所有东西。

在此先感谢您的帮助

编辑:关于Acegi的我一直在寻找如何使用这些插件的信息,但我还没有发现任何东西,是有据可查的,我发现信息但插件不支持了,这就是为什么我问这里

编辑:阅读本(我会看看是否达到使用LDAP):http://blog.springsource.com/2010/08/11/simplified-spring-security-with-grails/

回答

4

1.How我可以设置认证提供者是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) { 
} 
+0

我有同样的问题。我认为这有助于解决我的问题。这个答案是一个上升的标志。 – Tung 2016-07-11 09:48:51

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

+0

我已经通过这个文件之前。我安装了LDAP插件,但它看起来没有使用该协议来管理安全性,您是否知道Acegi的useLdap相当于?看起来像只安装LDAP插件不是 – Arturo 2010-10-27 22:00:44