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

Нил

Другие вопросы по тегам