我正在使用 Grails 2、Groovy 1.8.5、Grails Ldap 插件通过 LDAP 在 Active Directory 上执行查找,我得到 javax.naming.PartialResultException: Unprocessed 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)
非常感谢,G