Когда клиент подключается к серверу каталогов LDAP, состояние авторизации подключения устанавливается на anonymous
. Клиенты LDAP используют запрос BIND для изменения состояния авторизации соединения. Каждый запрос BIND изменяет состояние авторизации соединения на anonymous
, и каждый успешный запрос BIND изменяет состояние авторизации соединения на состояние авторизации, связанное с успешным запросом BIND, то есть состояние пользователя. Неудачные запросы BIND оставляют соединение в состоянии anonymous
.
Клиент создает BindRequest
(простой запрос BIND или форму запроса привязки SASL) передает серверу каталога LDAP и интерпретирует ответ сервера, включая любые элементы управления ответом, которые могут сопровождать ответ BIND. Нулевой код результата в ответе BIND указывает на то, что сервер каталогов LDAP соответствует учетным данным и пользователь аутентифицирован.
Если отличительное имя пользователя известно, то запрос BIND может быть построен на основе отличительного имени. Если это неизвестно, клиент LDAP должен создать поисковый запрос, передать его серверу и интерпретировать ответ. Отличительное имя всегда включается в успешный поисковый ответ, который возвращает хотя бы одну запись. Затем используйте выделенное, возвращенное в ответе на поиск, для создания запроса BIND, как указано выше.
В простейшем случае:
// exception handling is not shown
final String dn = ....;
final byte[] password = ....;
final BindRequest bindRequest = new SimpleBindRequest(dn,password);
final LDAPConnection ldapConnection = new LDAPConnection(hostname,port);
final BindResult bindResult = ldapConnection.bind(bindRequest);
final ResultCode resultCode = bindResult.getResultCode();
if(resultCode.equals(ResultCode.SUCCESS))
{
// user is authenticated
}
ldapConnection.close();
Если вы используете Java, вам следует использовать UnboundID LDAP SDK (JNDI не должен быть используется для нового кода).
смотрите также
person
Terry Gardner
schedule
27.08.2012