对于msdn 库中的这个 ADsOpenObject,我通过 LDAP url 从 Active Directory 获取了一些详细信息:
hRes = ADsOpenObject(pwszBindingString, pwszUSER, pwszPASS, ADS_SECURE_AUTHENTICATION,IID_IADs, (void**)&iads );
我怀疑在连接域控制器时给定的密码是否会被加密
注意 如果指定用户名和密码而没有指定认证标志,则用户名和密码在网络上以明文形式传输,存在安全风险。不要在未指定身份验证标志的情况下指定用户名和密码。
您正在使用 中的ADS_SECURE_AUTHENTICATION
标志ADS_AUTHENTICATION_ENUM
,这意味着:
请求安全身份验证。设置此标志时,WinNT 提供程序使用 NT LAN 管理器 (NTLM) 对客户端进行身份验证。Active Directory 将使用 Kerberos,可能还有 NTLM,对客户端进行身份验证。当用户名和密码为 NULL 时,ADSI 使用调用线程的安全上下文绑定到对象,该安全上下文可以是运行应用程序的用户帐户的安全上下文,也可以是调用线程所代表的客户端用户帐户的安全上下文.
NTLM 和 Kerberos 都是“加密”密码的协议。如果您还想加密用户名,那么您需要 SSL(这需要为域设置证书服务器)。
您始终可以使用数据包嗅探器来验证信息是否已加密。