Аутентификация java sasl с сервером openldap - PullRequest
0 голосов
/ 03 марта 2011

Может кто-нибудь увидеть причину, по которой этот код не работает, когда ldapwhoami -U portal -h yorktown -Y PLAIN -ZZ работает просто отлично?Есть ли что-то, что я делаю, что не эквивалентно?

LDAPConnection connection = new LDAPConnection();
connection.connect("yorktown.example.com", 389);
SSLUtil sslUtil = new SSLUtil(new TrustAllTrustManager());
SSLContext sslContext = sslUtil.createSSLContext();
ExtendedResult extendedResult = connection.processExtendedOperation(new StartTLSExtendedRequest(sslContext));
PLAINBindRequest bindRequest = new PLAINBindRequest("u:portal", "test");
BindResult bindResult = connection.bind(bindRequest);

этот код дает следующее исключение, выданное вызовом connection.bind:

play.exceptions.JavaExecutionException: SASL(-13): user not found: Password verification failed
        at play.mvc.ActionInvoker.invoke(ActionInvoker.java:285)
        at Invocation.HTTP Request(Play!)
Caused by: LDAPException(resultCode=49 (invalid credentials),
    errorMessage='SASL(-13): user not found: Password verification failed', 
    diagnosticMessage='SASL(-13): user not found: Password verification failed')
        at com.unboundid.ldap.sdk.LDAPConnection.bind(LDAPConnection.java:1710)

1 Ответ

0 голосов
/ 03 марта 2011

Либо документация для PLAINBindRequest неверна, либо что-то не так с тем, как OpenLDAP 2.4.23 обрабатывает запрос.Журналы сервера показали, что u: передается на сервер, в результате чего DN, такие как uid=u:portal,dc=example,dc=com.Как только я изменил его на new PLAINBindRequest("portal", "test"), это сработало.

...