2013-11-25 3 views
0

Я новичок в API LDAP. Я могу подключиться к LDAP-серверу и искать пользователя. Как я могу аутентифицировать пользователя с помощью электронной почты/пароля, используя API-интерфейс UnboundID LDAP?аутентифицировать пользователя в LDAP с помощью электронной почты и пароля

Я не видел аутентификации в LDAP, которая использует электронную почту и пароль для аутентификации пользователя?

Возможно ли это для аутентификации пользователя с помощью электронной почты и пароль

Что я делаю для аутентификации пользователя, указанного ниже

  1. Поиск ниже ПОЛЬЗОВАТЕЛЕЙ каталогов и согласования по электронной почте и найти его DN

  2. На основании DN, соединяющего пользователя, и если Connection Successful, аутентификация пользователя или выполнение происходит в подключении, то пользователь не аутентифицируется

Есть ли способ аутентифицировать пользователя?

ответ

0

Используя этот код, он выполняет поиск элемента. Если есть одна запись, у которой есть известный адрес электронной почты, BIND использует это DN (пароль должен откуда-то исходить). Ничего не происходит (аутентифицировано false) есть ли еще одна запись, соответствующая параметрам поиска, или если никакие записи не соответствуют параметрам поиска. Этот код предполагает, что baseObject равен dc = example, dc = com, поддерево требуется поиск, а атрибут с адресом электронной почты имеет псевдоним mail. Код также предполагает наличие bindDN и bindPassword, который имеет достаточные права доступа для поиска пользователя с адресом электронной почты. Адрес электронной почты, для которого он выполняется, считается [email protected].

Исключения игнорируются повсюду.

String baseObject = "dc=example,dc=com"; 
String bindDN = "dn-with-permission-to-search"; 
String bindPassword = "password-of-dn-with-permission-to-search"; 

// Exceptions ignored. 
LDAPConnection ldapConnection = 
    new LDAPConnection(hostname,port,bindDN,bindPassword); 

String emailAddress = "[email protected]"; 
String filterText = String.format("mail=%s",emailAddress); 
SearchRequest searchRequest = new SearchRequest(baseObject, 
    SearchScope.SUB,filterText,"1.1"); 
SearchResult searchResult = ldapConnection.search(searchRequest); 

boolean authenticated = false; 
if(searchResult.getEntryCount() == 1) 
{ 
    // There is one entry with that email address 
    SearchResultEntry entry = searchResult.getSearchEntries().get(0); 

    // Create a BIND request to authenticate. The password has 
    // has to come from someplace outside this code 
    BindRequest bindRequest = 
     new SimpleBindRequest(entry.getDN(),password); 
    ldapConnection.bind(bindRequest); 
    authenticated = true; 
} 
else if(searchResult.getEntryCount() > 1) 
{ 
    // more than one entry matches the search parameters 
} 
else if(searchResult.getEntryCount() == 0) 
{ 
    // no entries matched the search parameters 
} 
1

Вы должны сделать два шага.

  1. Использование административного входа в систему, поиск в каталоге для пользователя.
  2. Используя DN этого пользователя и пароль, которые он поставил, попытайтесь связать.

Если либо не удалось, то ли идентификатор или пароль неверны.

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