LDAP搜索未处理的继续参考

时间:2012-02-21 00:36:56

标签: grails active-directory ldap referrals

我正在使用Grails 2,Groovy 1.8.5,Grails Ldap插件在Active Directory上通过LDAP执行查找,我收到javax.naming.PartialResultException:未处理的Continuation Reference(s);剩余名称'/'。对于授权,我使用Spring LDAP,没有任何问题。 我环顾四周,大多数线程都在自动跟踪引用,我将这个标志用于derefLinkFlag = true 我甚至试图将此参数传递给JVM -Djava.naming.referral = follow

有没有人碰到过这个?欢迎任何建议。你认为这与AD的设置有关吗?如果是的话,我应该寻找什么,我是AD的新手。

我可以避免这个异常,因为它发生了我的Active Directory成为全局目录,所以我只是连接到端口3268,一切正常。但是,有一点需要注意,并非所有属性都添加到全局编录中,例如physicalDeliveryOfficeName。这也可以通过将属性复制/包含在GC模式中来解决,但出于多种原因,我不希望这样做。

代码如下: 配置

ldap {
  directories {
   rootdir {
    url = "ldap://my.company.com:389"
    base = "DC=my,DC=company,DC=com"
    userDn = "cn=User Name,cn=Users,dc=my,dc=company,dc=com"
    password = "secret"
    searchControls {
    countLimit = 400
    timeLimit = 6000
    searchScope = "subtree"
    derefLinkFlag = true
    }
  }
}

schemas = [
   com.mycompany.ldap.User,
   com.mycompany.ldap.Group
]
}

域名

@GldapoSchemaFilter("(objectclass=person)")
class User {
@GldapoNamingAttribute
String cn

String dn
String mail
String sn
String physicalDeliveryOfficeName
}

控制器

 class UserController {

   def index() {
        redirect(action: "list")
   }

   def list(){
    List users = User.findAll()
    [userInstanceList: users, userInstanceTotal: users.size()]
   }
 }

例外:

Unprocessed Continuation Reference(s). Stacktrace follows:
javax.naming.PartialResultException: Unprocessed Continuation Reference(s); remaining      name '/'
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2846)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2820)
at com.sun.jndi.ldap.LdapNamingEnumeration.getNextBatch(LdapNamingEnumeration.java:129)
at com.sun.jndi.ldap.LdapNamingEnumeration.hasMoreImpl(LdapNamingEnumeration.java:198)
at com.sun.jndi.ldap.LdapNamingEnumeration.hasMore(LdapNamingEnumeration.java:171)
at gldapo.GldapoDirectory.nonPagedSearch(GldapoDirectory.groovy:162)
at gldapo.GldapoDirectory.search(GldapoDirectory.groovy:144)
at gldapo.schema.GldapoSchemaClassInjecto$__clinit__closure35.doCall(GldapoSchemaClassInjecto.groovy:374)
at gldapo.schema.GldapoSchemaClassInjecto$__clinit__closure38.doCall(GldapoSchemaClassInjecto.groovy:390)
at uk.co.mycomp.myapp.ldap.UserController.list(UserController.groovy:15)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)

非常感谢, ģ

2 个答案:

答案 0 :(得分:3)

解决方案是将以下行添加到Config.groovy

中的ldap设置中
ignorePartialResultExcepton = true

答案 1 :(得分:1)

命名异常javax.naming.PartialResultException:未处理的Continuation Reference(s);剩余名称: searchbaseDN从顶层运行时出现此错误。在搜索库dn中使用ou(组织单位)