2013-07-04 4 views
0

У меня возникает следующая ошибка при попытке связывания с помощью DIGEST-MD5 с ApacheDS с использованием UnboundID LDAP SDK. Я уже тестировал соединение, используя простое связывание с UnboundID и Apache Shiro, так что ApacheDS работает.Ошибка привязки UnboundID LDAP DIGEST-MD5 NPE

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

Похоже, это исключение происходящий в коде 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, который занимает область, и предоставит соответствующее значение для области (которую вам может потребоваться найти у администратора вашего каталога), вы должны иметь возможность сделать привязку успешной.

Я только что внес изменения в поддержку LDAP SDK для механизмов CRAM-MD5, DIGEST-MD5 и GSSAPI SASL, чтобы он, надеюсь, предоставил более полезное сообщение, если такая проблема возникнет в будущем.

Смежные вопросы