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 | 摘要式身份验证包。 | 若要以当前用户身份登录,请将 dn 和 cred 参数设置为 NULL。 若要以其他用户身份登录,请将 dn 参数设置为 NULL ,将 cred 参数设置为指向具有相应用户名、域名和密码 的SEC_WINNT_AUTH_IDENTITY 结构的指针。 |
LDAP_AUTH_DPA | 分布式密码身份验证。 由 Microsoft 成员资格系统使用。 | 若要以当前用户身份登录,请将 dn 和 cred 参数设置为 NULL。 若要以其他用户身份登录,请将 dn 参数设置为 NULL ,将 cred 参数设置为指向具有相应用户名、域名和密码 的SEC_WINNT_AUTH_IDENTITY 结构的指针。 |
LDAP_AUTH_MSN | Microsoft 网络身份验证服务。 | 若要以当前用户身份登录,请将 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 管理器 | 若要以当前用户身份登录,请将 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 配合使用。
绑定操作通过提供可分辨名称和某种类型的身份验证凭据(如密码)来标识到目录服务器的客户端。 确切的凭据取决于所使用的身份验证方法。 如果为具有 ldap_bind_s () (非简单) 的凭据传入 NULL,则将使用当前用户或服务凭据。 如果指定的简单绑定方法 (ldap_simple_bind_s) , 则它等效于 NULL 纯文本密码。 有关详细信息,请参阅 ldap_bind。
请注意,LDAP 2 服务器要求在尝试其他需要身份验证的操作之前绑定应用程序。
多线程处理:绑定调用不安全,因为它们作为一个整体应用于连接。 如果线程共享连接并尝试将绑定操作与其他操作线程化,请谨慎操作。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista |
最低受支持的服务器 | Windows Server 2008 |
目标平台 | Windows |
标头 | winldap.h |
Library | Wldap32.lib |
DLL | Wldap32.dll |
另请参阅
返回值