ldap_bind_sA 函数 (winldap.h)

ldap_bind_s函数向 LDAP 服务器同步对客户端进行身份验证。

语法

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

参数

[in] ld

会话句柄。

[in] dn

指向以 null 结尾的字符串的指针,该字符串包含用于绑定的条目的可分辨名称。 这可以是 DN、UPN、WinNT 样式用户名或目录服务器将接受为标识符的其他名称。

[in] cred

指向以 null 结尾的字符串的指针,该字符串包含用于进行身份验证的凭据。 可以使用此参数传递任意凭据。 凭据的格式和内容取决于 方法 参数的设置。 有关详细信息,请参阅“备注”。

[in] method

指示要使用的身份验证方法。 有关详细信息和有效的异步身份验证方法列表,请参阅备注部分。 有关有效异步身份验证方法的详细信息和说明,请参阅 ldap_bind

返回值

如果函数成功,则返回值 LDAP_SUCCESS

如果函数失败,它将返回错误代码。 有关详细信息,请参阅 返回值

注解

在 Windows Server 2008 和 Windows Vista 中引入用户帐户控制对于在 LDAP 中进行修改或添加具有非常重要的影响。 当用户使用受限的 UAC 管理员令牌登录 DC 并使用 NULL 凭据时,对目录的任何修改或添加,或任何架构更改操作都将失败。 这包括 DirSync 搜索、使用 SecurityDescriptorFlags 时从对象的 ntSecurityDescriptor 属性检索 SACL,以及许多其他操作。

由于访问权限不足,这些操作都将失败。

如果用户帐户控制在管理员登录到 DC 时生效,则管理员将在登录会话中获取受限令牌。 如果他或她随后使用具有 NULL 凭据的ldap_bind_s,则进行修改或添加的操作将失败。

ldap_bind_s的实现支持下表中列出的身份验证方法。 使用 LDAP_AUTH_SIMPLE 选项调用ldap_bind_s等效于调用 ldap_simple_bind_s

方法 说明 凭据
LDAP_AUTH_SIMPLE 使用纯文本密码进行身份验证。 包含用户密码的字符串。
LDAP_AUTH_DIGEST 摘要式身份验证包。 若要以当前用户身份登录,请将 dncred 参数设置为 NULL。 若要以其他用户身份登录,请将 dn 参数设置为 NULL ,将 cred 参数设置为指向具有适当用户名、域名和密码 的SEC_WINNT_AUTH_IDENTITY 结构的指针。
LDAP_AUTH_DPA 分布式密码身份验证。 由 Microsoft 成员资格系统使用。 若要以当前用户身份登录,请将 dncred 参数设置为 NULL。 若要以其他用户身份登录,请将 dn 参数设置为 NULL ,将 cred 参数设置为指向具有适当用户名、域名和密码 的SEC_WINNT_AUTH_IDENTITY 结构的指针。
LDAP_AUTH_MSN Microsoft 网络身份验证服务。 若要以当前用户身份登录,请将 dncred 参数设置为 NULL。 若要以其他用户身份登录,请将 dn 参数设置为 NULL ,将 cred 参数设置为指向具有适当用户名、域名和密码 的SEC_WINNT_AUTH_IDENTITY 结构的指针。
LDAP_AUTH_NEGOTIATE 通用安全服务 (GSS) (Snego) 。 不提供身份验证,而是从可用服务列表中选择最合适的身份验证方法,并将所有身份验证数据传递给该服务。 若要以当前用户身份登录,请将 dncred 参数设置为 NULL。 若要以其他用户身份登录,请将 dn 参数设置为 NULL ,将 cred 参数设置为指向具有相应用户名、域名和密码 的SEC_WINNT_AUTH_IDENTITYSEC_WINNT_AUTH_IDENTITY_EX 结构的指针。
LDAP_AUTH_NTLM NT LAN 管理器 若要以当前用户身份登录,请将 dncred 参数设置为 NULL。 若要以其他用户身份登录,请将 dn 参数设置为 NULL ,将 cred 参数设置为指向具有相应用户名、域名和密码 的SEC_WINNT_AUTH_IDENTITYSEC_WINNT_AUTH_IDENTITY_EX 结构的指针。
LDAP_AUTH_SICILY 涵盖与 MSN 服务器的包协商。 若要以当前用户身份登录,请将 dncred 参数设置为 NULL。 若要以其他用户身份登录,请将 dn 参数设置为 NULL ,将 cred 参数设置为指向具有适当用户名、域名和密码 的SEC_WINNT_AUTH_IDENTITY 结构的指针。
LDAP_AUTH_SSPI 已过时。 为实现向后兼容性而包含在内。 使用此常量选择 GSS (Snego) 协商服务。 LDAP_AUTH_NEGOTIATE 相同。
 

对于异步绑定身份验证,请将 LDAP_AUTH_SIMPLEldap_bind 配合使用。

绑定操作通过提供可分辨名称和某种类型的身份验证凭据(如密码)来标识目录服务器的客户端。 确切的凭据取决于使用的身份验证方法。 如果使用 ldap_bind_s () (非简单) 为凭据传入 NULL,则将使用当前用户或服务凭据。 如果指定了ldap_simple_bind_s ) 中 ( 简单绑定方法,则它等效于 NULL 纯文本密码。 有关详细信息,请参阅 ldap_bind

请注意,LDAP 2 服务器在尝试其他需要身份验证的操作之前需要绑定应用程序。

多线程处理:绑定调用不安全,因为它们作为一个整体应用于连接。 如果线程共享连接并尝试将绑定操作与其他操作线程化,请谨慎操作。

注意 Microsoft LDAP 客户端对每次绑定响应往返使用 120 秒 (2 分钟) 的默认超时值。 可以使用 “LDAP_OPT_TIMELIMIT 会话”选项更改此超时值。 除非使用 ldap_set_option 指定其他操作,否则没有超时。
 
完成会话句柄上的所有操作后,必须通过将 LDAP 会话句柄传递给 ldap_unbind 函数来终止会话。 此外,如果 ldap_bind_s 调用失败,则当不再需要执行错误恢复时,应通过调用 ldap_unbind 释放会话句柄。

要求

要求
最低受支持的客户端 Windows Vista
最低受支持的服务器 Windows Server 2008
目标平台 Windows
标头 winldap.h
Library Wldap32.lib
DLL Wldap32.dll

另请参阅

建立 LDAP 会话

函数

返回值

SEC_WINNT_AUTH_IDENTITY

ldap_bind

ldap_simple_bind_s

ldap_unbind