UnboundID SASL не может получить пароль
Относительно моего другого вопроса: причина привязки UnboundID LDAP DIGEST-MD5 является причиной NPE.
Я использую ApacheDS в качестве сервера и UnboundID в качестве API.
Я последовал предложенному ответу, и NPE ушел. Однако сейчас я получаю эту ошибку.
LDAPException(resultCode=49 (invalid credentials), errorMessage='INVALID_CREDENTIALS: DIGEST-MD5: cannot acquire password for 'dn:uid=blah,ou=dev,dc=blah,dc=com in realm : mizar.com', diagnosticMessage='INVALID_CREDENTIALS: DIGEST-MD5: cannot acquire password for dn:uid=blah,ou=dev,dc=blah,dc=com in realm : blah.com')
at com.unboundid.ldap.sdk.LDAPConnection.bind(LDAPConnection.java:1881)
at UnboundDemo.main(UnboundDemo.java:40)
Код следующим образом:
conn = new LDAPConnection("1.1.1.1",389);
mdBind = new DIGESTMD5BindRequest("dn:uid=blah,ou=dev,dc=blah,dc=com", null, "test", "blah.com",null);
bindResult = conn.bind(mdBind);
System.out.println("MD5 bind success!");
Вот конфигурация ApacheDS SASL со страницы конфигурации Directory Studio:
SASL Host: 1.1.1.1
SASL Principal: ldap/ldap.example.com@EXAMPLE.COM
Search Base Dn: ou=dev,dc=blah,dc=com
Документ ApacheDS не объяснил, что такое принципал SASL, поэтому я начинаю думать, что это может быть неправильная конфигурация с моей стороны. Основная идея здесь состоит в том, чтобы протестировать UnboundID против ряда механизмов SASL.
1 ответ
Вполне вероятно, что сервер ApacheDS не настроен для хранения паролей в формате, который позволяет ему определять значение открытого текста для пароля.
Основным привлекательным свойством механизмов SIGL DIGEST-MD5 и CRAM-MD5 является то, что пароль перед отправкой на сервер объединяется с другой информацией и кодируется односторонним дайджестом. Это гарантирует, что пароль не передается в открытом виде, поэтому он защищен от любого, кто может наблюдать за сообщением без необходимости защищать оставшуюся часть сообщения. Однако возможность аутентификации с помощью одного из этих механизмов требует, чтобы сервер мог определять версию пароля в виде открытого текста, чтобы он мог выполнять ту же криптографическую обработку, что и клиент.
Если вы просто хотите проверить способность UnboundID LDAP SDK выполнять аутентификацию SASL, то я бы рекомендовал использовать механизм PLAIN, поскольку он не должен налагать какие-либо особые требования на вход пользователя. Если вы действительно хотите использовать DIGEST-MD5, вам необходимо убедиться, что сервер имеет доступ к открытым текстовым представлениям паролей для пользователей, которым требуется аутентификация с помощью этого механизма.
Нил