ADsOpenObject密码加密了吗?

时间:2012-12-03 13:33:25

标签: c++ windows ldap

我正在通过LDAP网址从Active Directory获取一些详细信息 msdn库中的ADsOpenObject:

hRes = ADsOpenObject(pwszBindingString, pwszUSER, pwszPASS, ADS_SECURE_AUTHENTICATION,IID_IADs, (void**)&iads );

我怀疑在连接域控制器时是否加密给定密码

1 个答案:

答案 0 :(得分:3)

This MSDN page

  

注意如果指定了用户名和密码而未指定身份验证标志,则用户名和密码将以明文形式通过网络传输,这存在安全风险。如果不指定身份验证标志,请不要指定用户名和密码。

您正在使用ADS_AUTHENTICATION_ENUM中的ADS_SECURE_AUTHENTICATION标记,表示:

  

请求安全身份验证。设置此标志后,WinNT提供程序使用NT LAN Manager(NTLM)对客户端进行身份验证。 Active Directory将使用Kerberos(可能还有NTLM)对客户端进行身份验证。当用户名和密码为NULL时,ADSI使用调用线程的安全上下文绑定到对象,该安全上下文是运行应用程序的用户帐户的安全上下文或调用线程表示的客户机用户帐户的安全上下文

NTLM和Kerberos都是“加密”密码的协议。如果您还想加密用户名,那么您需要SSL(这需要为域设置证书服务器)。

您始终可以使用数据包嗅探器来验证信息是否已加密。