首页 文章

如何在Grails上使用LDAP插件?

提问于
浏览
4

我'm starting a new project on Groovy and Grails. I'现在正在处理身份验证部分,因为我们有一个LDAP服务器,我想使用LDAP进行身份验证 . 我开始设置我的环境,我正在使用SpringSource Tool Suite和 Grails 1.3.5 . 当我开始使用身份验证部分时,我安装了两个插件:

  • springSecurityCore - 1.0.1

  • springSecurityLdap - 1.0.1

我还为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上创建的用户进行身份验证,我可以登录,但我猜这个用户只是在本地创建,而且是瞬态的 .

  • 如何将身份验证提供程序设置为LDAP服务器?

  • 运行"s2 quickstart"后安装安全核心和ldap插件后还需要做些什么?

Groovy和Grails的东西在背景上做了很多事情,在开始时很难理解在哪里配置所有内容 .

在此先感谢您的帮助

EDIT: 我've been looking for information on how to use those plugins but I haven' t发现了任何记录良好的内容,我为什么在这里问我

EDIT: 阅读本文(我将看看是否实现使用LDAP):http://blog.springsource.com/2010/08/11/simplified-spring-security-with-grails/

2 回答

  • 0

    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) {
    }
    
  • 4

    这两个插件在以下位置都有相当广泛的文档:

    http://burtbeckwith.github.com/grails-spring-security-core/docs/manual/index.html http://burtbeckwith.github.com/grails-spring-security-ldap/docs/manual/index.html

相关问题