当我尝试使用UnboundID LDAP SDK使用DIGEST-MD5针对ApacheDS绑定时,我收到以下错误。我已经使用UnboundID和Apache Shiro的简单绑定测试了连接,因此ApacheDS正在运行。
LDAPException(resultCode=82 (local error), errorMessage='Unable to create a subsequent DIGEST-MD5 SASL request: NullPointerException(trace='processChallenge(DigestMD5Client.java:339) / evaluateChallenge(DigestMD5Client.java:207) / processSASLBind(SASLHelper.java:149) / process(DIGESTMD5BindRequest.java:406) / bind(LDAPConnection.java:1837) / main(UnboundDemo.java:38)', revision=15579)')
at com.unboundid.ldap.sdk.SASLHelper.processSASLBind(SASLHelper.java:154)
at com.unboundid.ldap.sdk.DIGESTMD5BindRequest.process(DIGESTMD5BindRequest.java:406)
at com.unboundid.ldap.sdk.LDAPConnection.bind(LDAPConnection.java:1837)
at com.mizar.ldap.UnboundDemo.main(UnboundDemo.java:38)
Caused by: java.lang.NullPointerException
at com.sun.security.sasl.digest.DigestMD5Client.processChallenge(DigestMD5Client.java:339)
at com.sun.security.sasl.digest.DigestMD5Client.evaluateChallenge(DigestMD5Client.java:207)
at com.unboundid.ldap.sdk.SASLHelper.processSASLBind(SASLHelper.java:149)
... 3 more
我按照JavaDoc中的示例进行操作,我的示例测试代码如下所示:
LDAPConnection conn;
BindResult bindResult;
DIGESTMD5BindRequest mdBind;
try {
conn = new LDAPConnection("1.1.1.1",389);
mdBind = new DIGESTMD5BindRequest("dn:uid=someuser,ou=dev,dc=blah,dc=com", "test");
bindResult = conn.bind(mdBind);
System.out.println("MD5 bind success!");
}
catch (Exception e) {
e.printStackTrace();
}
答案 0 :(得分:0)
看起来这个异常源于JDK处理SASL处理的代码而不是LDAP SDK本身。基于我能够找到的com.sun.security.sasl.digest.DigestMD5Client类的源代码版本(http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/com/sun/security/sasl/digest/DigestMD5Client.java),看起来这是一个需要领域才能完成的问题绑定处理但没有一个可用。如果切换到使用带领域的DIGESTMD5BindRequest构造函数之一,并为域提供适当的值(您可能需要从目录管理员中找到),那么您应该能够使绑定成功。
我刚刚对CRAM-MD5,DIGEST-MD5和GSSAPI SASL机制的LDAP SDK支持进行了更改,以便在将来出现此类问题时,它将有望提供更有用的信息。 / p>