使用加密进行绑定

通过网络交换的敏感数据应进行加密。 为允许此功能,ADSI 支持两种加密:Kerberos 和安全套接字层 (SSL)。 这两种加密均需使用 ADsOpenObjectIADsOpenDSObject::OpenDSObject 进行绑定。

在此情况下,无法使用 GetObjectADsGetObject 进行绑定,因为这些函数会导致 ADSI 使用的 LDAP 请求以及从目录服务器返回的数据以纯文本形式进行传输。 出于调试目的,关闭加密有助于使用网络监视器来查看客户端与目录服务器之间的 LDAP 请求和数据。

基于 Kerberos 的加密

若要使用基于 Kerberos 的加密,请在调用 ADsOpenObjectIADsOpenDSObject::OpenDSObject 时指定 ADS_USE_SEALING 标记。 ADS_USE_SEALING 标记还可用于验证数据完整性,即确保接收的数据与发送的数据相同。 如果指定了 ADS_USE_SEALING 标记,则会同时自动指定 ADS_USE_SIGNING 标记。 这两个标志均需进行 Kerberos 身份验证,而它仅适用于以下条件:

基于 SSL 的加密

若要使用基于 SSL 的加密,请在调用 ADsOpenObjectIADsOpenDSObject::OpenDSObject 时指定 ADS_USE_SSL 标记。 如果仅指定了 ADS_USE_SSL 标记,ADSI 则会打开 SSL 端口 636,然后通过该 SSL 通道执行简易绑定。 如果同时指定了 ADS_SECURE_AUTHENTICATIONADS_USE_SSL 标记,则绑定行为取决于从中发出调用的客户端。 在不支持的 Windows 版本中,ADSI 会先打开一个 SSL 通道,并使用指定的用户名和密码或当前用户上下文执行简易绑定(如果用户名和密码均为 null)。 在受支持的 Windows 版本中,ADSI 会执行安全的身份验证,而不是简易绑定。

若要在与 Active Directory 通信时使用基于 SSL 的加密,Active Directory 必须已启用公钥基础结构 (PKI)。 可通过在 Active Directory 中的某个服务器上设置企业证书颁发机构(包括某一 Active Directory 服务器自身)来启用 PKI。 设置企业证书颁发机构会导致 Active Directory 服务器获取服务器证书,而该证书后续可用于执行基于 SSL 的加密。