Поделиться через


функция ldap_bind_s (winldap.h)

Функция ldap_bind_s синхронно выполняет проверку подлинности клиента на сервере LDAP.

Синтаксис

WINLDAPAPI ULONG LDAPAPI ldap_bind_s(
  [in] LDAP        *ld,
  [in] const PSTR  dn,
  [in] const PCHAR cred,
  [in] ULONG       method
);

Параметры

[in] ld

Дескриптор сеанса.

[in] dn

Указатель на строку, завершающуюся null, которая содержит различающееся имя записи, используемой для привязки. Это может быть имя пользователя, имя участника-пользователя, имя пользователя в стиле WinNT или другое имя, которое сервер каталогов будет принимать в качестве идентификатора.

[in] cred

Указатель на строку, завершающуюся нулевым значением, которая содержит учетные данные для проверки подлинности. С помощью этого параметра можно передать произвольные учетные данные. Формат и содержимое учетных данных зависит от параметра метода . Дополнительные сведения см. в подразделе "Примечания".

[in] method

Указывает используемый метод проверки подлинности. Дополнительные сведения и список допустимых методов асинхронной проверки подлинности см. в разделе Примечания. Дополнительные сведения и описание допустимого метода асинхронной проверки подлинности см. в разделе ldap_bind.

Возвращаемое значение

Если функция выполняется успешно, возвращаемое значение будет LDAP_SUCCESS.

Если функция завершается сбоем, она возвращает код ошибки. Дополнительные сведения см. в разделе Возвращаемые значения.

Комментарии

Введение контроля учетных записей в Windows Server 2008 и Windows Vista имеет очень важное значение в отношении внесения изменений или дополнений в LDAP. При входе пользователя в контроллер домена с ограниченным маркером администратора контроля учетных записей и использованием учетных данных NULL любое изменение или добавление каталога или любая операция изменения схемы завершится ошибкой. К ним относятся поиск DirSync, получение СПИСКА SACL из атрибута ntSecurityDescriptor объекта при использовании SecurityDescriptorFlags и многие другие операции.

Все эти действия завершатся ошибкой из-за недостаточных прав доступа.

Если контроль учетных записей действует при входе администратора в контроллер домена, администратор получит ограниченный маркер в сеансе входа. Если затем он использует ldap_bind_s с учетными данными NULL , операции, которые вносят изменения или дополнения, завершатся ошибкой.

Реализация ldap_bind_s поддерживает методы проверки подлинности, перечисленные в следующей таблице. Вызов ldap_bind_s с параметром LDAP_AUTH_SIMPLE эквивалентен вызову ldap_simple_bind_s.

Метод Описание Учетные данные
LDAP_AUTH_SIMPLE Проверка подлинности с паролем в виде открытого текста. Строка, содержащая пароль пользователя.
LDAP_AUTH_DIGEST Пакет дайджест-проверки подлинности. Чтобы войти в систему от имени текущего пользователя, задайте для параметров dn и credзначение NULL. Чтобы войти в систему от имени другого пользователя, задайте для параметра dnзначение NULL , а для параметра cred — указатель на структуру SEC_WINNT_AUTH_IDENTITY с соответствующим именем пользователя, доменным именем и паролем.
LDAP_AUTH_DPA Распределенная проверка подлинности по паролю. Используется системой членства Майкрософт. Чтобы войти в систему от имени текущего пользователя, задайте для параметров dn и credзначение NULL. Чтобы войти в систему от имени другого пользователя, задайте для параметра dnзначение NULL , а для параметра cred — указатель на структуру SEC_WINNT_AUTH_IDENTITY с соответствующим именем пользователя, доменным именем и паролем.
LDAP_AUTH_MSN Служба проверки подлинности сети (Майкрософт). Чтобы войти в систему от имени текущего пользователя, задайте для параметров dn и credзначение NULL. Чтобы войти в систему от имени другого пользователя, задайте для параметра dnзначение NULL , а для параметра cred — указатель на структуру SEC_WINNT_AUTH_IDENTITY с соответствующим именем пользователя, доменным именем и паролем.
LDAP_AUTH_NEGOTIATE Универсальные службы безопасности (GSS) (Snego). Не обеспечивает проверку подлинности, но вместо этого выбирает наиболее подходящий метод проверки подлинности из списка доступных служб и передает все данные проверки подлинности этой службе. Чтобы войти в систему от имени текущего пользователя, задайте для параметров dn и credзначение NULL. Чтобы войти от имени другого пользователя, задайте для параметра dnзначение NULL , а для параметра cred — указатель на SEC_WINNT_AUTH_IDENTITY или SEC_WINNT_AUTH_IDENTITY_EX структуру с соответствующим именем пользователя, доменным именем и паролем.
LDAP_AUTH_NTLM NT LAN Manager Чтобы войти в систему от имени текущего пользователя, задайте для параметров dn и credзначение NULL. Чтобы войти от имени другого пользователя, задайте для параметра dnзначение NULL , а для параметра cred — указатель на SEC_WINNT_AUTH_IDENTITY или SEC_WINNT_AUTH_IDENTITY_EX структуру с соответствующим именем пользователя, доменным именем и паролем.
LDAP_AUTH_SICILY Описывает согласование пакетов с серверами MSN. Чтобы войти в систему от имени текущего пользователя, задайте для параметров dn и credзначение NULL. Чтобы войти в систему от имени другого пользователя, задайте для параметра dnзначение NULL , а для параметра cred — указатель на структуру SEC_WINNT_AUTH_IDENTITY с соответствующим именем пользователя, доменным именем и паролем.
LDAP_AUTH_SSPI Является устаревшей. Включено для обеспечения обратной совместимости. При использовании этой константы выбирается служба согласования GSS (Snego). То же, что и LDAP_AUTH_NEGOTIATE.
 

Для асинхронной проверки подлинности при привязке используйте LDAP_AUTH_SIMPLE с ldap_bind.

Операция привязки идентифицирует клиента к серверу каталогов, предоставляя различающееся имя и некоторый тип учетных данных для проверки подлинности, например пароль. Точные учетные данные зависят от используемого метода проверки подлинности. Если передать значение NULL для учетных данных с ldap_bind_s() (не простой), будут использоваться учетные данные текущего пользователя или службы. Если указан простой метод привязки (как в ldap_simple_bind_s), он эквивалентен паролю с открытым текстом NULL . Дополнительные сведения см. в разделе ldap_bind.

Имейте в виду, что серверы LDAP 2 требуют привязки приложения перед попыткой выполнения других операций, требующих проверки подлинности.

Многопоточность. Привязка вызовов небезопасна, так как они применяются к подключению в целом. Будьте осторожны, если потоки совместно используют подключения и пытаются выполнить операции привязки с другими операциями.

Примечание Клиент Microsoft LDAP использует значение времени ожидания по умолчанию, равное 120 секундам (2 минуты) для каждой круговой операции bind-response. Это значение времени ожидания можно изменить с помощью параметра сеанса LDAP_OPT_TIMELIMIT . Другие операции не имеют времени ожидания, если не указано с помощью ldap_set_option.
 
После завершения всех операций с дескриптором сеанса необходимо завершить, передав дескриптор сеанса LDAP функции ldap_unbind . Кроме того, если вызов ldap_bind_s завершается сбоем, дескриптор сеанса должен быть освобожден с помощью вызова ldap_unbind , если восстановление ошибок больше не требуется.

Требования

Требование Значение
Минимальная версия клиента Windows Vista
Минимальная версия сервера Windows Server 2008
Целевая платформа Windows
Header winldap.h
Библиотека Wldap32.lib
DLL Wldap32.dll

См. также раздел

Создание сеанса LDAP

Функции

Возвращаемые значения

SEC_WINNT_AUTH_IDENTITY

ldap_bind

ldap_simple_bind_s

ldap_unbind