Используя этот код, он выполняет поиск элемента. Если есть одна запись, у которой есть известный адрес электронной почты, 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
}