试图让Grails ldap-0.8.2插件用于AD的非身份验证搜索

时间:2014-07-01 15:02:36

标签: ldap

我一直试图让ldap-0.8.2或gldapo插件与Grails 2.3.5一起在AD中执行简单的人物搜索。我不是在寻找身份验证,只是为了构建人员目录搜索表单。我已经接近一周了,现在正在查看实现这个插件的问题的旧参考,似乎无法弄清楚跳出来的火炬的正确组合是什么。

在BuildConfig.groovy中我有:

compile ":ldap:0.8.2"

在Config.groovy中我有:

import edu.fgcu.gtd.GldapoUser

ldap {
   directories {
       directory1 {
           defaultDirectory = true
           url = "ldap://FGCU-AMBERJACK.primary.ad.fgcu.edu"
           userDn = "CN=******,OU=******,OU=******,OU=******,DC=**,DC=**,DC=***,DC=***"
           password = "********"
           searchControls {
               countLimit = 40
               timeLimit = 600
               searchScope = "subtree"
           }
       }
   }
   schemas: [edu.fgcu.gtd.GldapoUser]
}

我在路径" Ldap / edu / fgcu / gtd / GldapoUser.groovy"

中有以下groovy文件
package edu.fgcu.gtd

import gldapo.schema.annotation.GldapoNamingAttribute
import gldapo.schema.annotation.GldapoSynonymFor
import gldapo.schema.annotation.GldapoSchemaFilter
/**
 *
 * @author pallen
 */
@GldapoSchemaFilter("(objectclass=person)")
class GldapoUser {

    @GldapoSynonymFor("uid")
    String username

    @GldapoSynonymFor("cn")
    String name

    @GldapoSynonymFor("title")
    String title

    @GldapoSynonymFor("physicalDeliveryOfficeName")
    String office

    @GldapoSynonymFor("telephoneNumber")
    String phone

    @GldapoSynonymFor("mail")
    String email

    @GldapoSynonymFor("department")
    String department
}

然后我有以下控制器

package edu.fgcu.gtd

import edu.fgcu.gtd.GldapoUser

class PersonSearchController {

    def index() {
        render(view: "search")
    }

    def search() {
        String searchString = params?.lastName + "*"
        if (params.firstName){
            searchString += "," + params.firstName + "*"
        }
        def List personSearchList = GldapoUser.findAll(
             base: "OU=Florida Gulf Coast University,DC=primary,DC=ad,DC=fgcu,DC=edu") {
                    like "cn", searchString
             }
        respond personSearchList, model:[personSearchCount: personSearchList.count()]
    }
}

当我运行应用程序时,我收到以下错误,我看到其他人参考,但到目前为止我找到的所有建议都没有帮我解决这个问题。

    URI: /GroovyGTD/personSearch/search
  Class: groovy.lang.MissingMethodException
Message: No signature of method: static edu.fgcu.gtd.GldapoUser.findAll() is applicable for argument types: (java.util.LinkedHashMap, edu.fgcu.gtd.PersonSearchController$_search_closure1) values: [[base:OU=Florida Gulf Coast University,DC=primary,DC=ad,DC=fgcu,DC=edu], ...] Possible solutions: findAll(), findAll(groovy.lang.Closure), find(), find(groovy.lang.Closure)    

我对Grails比较陌生,但我对Java非常擅长,并且已经为外部库做了一些困难的配置,但是这个插件让我很难过。

提前致谢,

1 个答案:

答案 0 :(得分:0)

我能够全力以赴。

第一个问题是模式评论。我不得不在config.groovy中放置schemas = [edu.fgcu.gtd.GldapoUser]。

接下来,我必须为我的GldapoUser对象添加一个@GldapoNamingAttribute以获取“cn”属性,并且“uid”不在我的AD人员条目中,所以我摆脱它并使用“sAMAccountName”作为用户名。

在这些变化之后,这一切都运转良好。