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

[in] cred

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

[in] method

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

返回值

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

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

注解

在 Windows Server 2008 和 Windows Vista 中引入用户帐户控制对于在 LDAP 中进行修改或添加具有非常重要的结果。 当用户使用受限的 UAC 管理员令牌并使用 NULL 凭据登录到 DC 时,对目录的任何修改或添加,或任何架构更改操作都将失败。 这包括 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