使用身份验证方法“SASL DIGEST-MD5”时要传递哪种密码格式(纯文本或MD5哈希)?

时间:2015-06-18 15:31:45

标签: c# authentication active-directory md5 sasl

我正在替换LDAP for Active Directory - AD,我在身份验证方面遇到了困难。在LDAP中,密码作为MD5哈希传递。在AD中,我还没有找到这样的东西。我正在尝试将SASL与DIGEST-MD5一起使用,但只有在以纯文本格式传递密码时才能使用 Bind 。 我想知道是否可以继续以MD5哈希格式传递密码。如果是这样,这是怎么做到的?下面是C#中的代码。

怀疑在第5行:是否可以将字符串(secureString)传递给MD5哈希?

1. LdapDirectoryIdentifier identifier = new LdapDirectoryIdentifier("MYSERVER", 636, false, false);
2. LdapConnection ldapConnection = new LdapConnection(identifier);
3. SecureString secureString = new SecureString();
4. "userPassword".ToCharArray().ToList().ForEach(p => secureString.AppendChar(p)); 
5. var networkCredential = new NetworkCredential("username", secureString, "realm");
6. ldapConnection.SessionOptions.VerifyServerCertificate = new VerifyServerCertificateCallback(ServerCallBack);
7. ldapConnection.SessionOptions.SecureSocketLayer = true;
8. ldapConnection.AuthType = AuthType.Digest;
9. ldapConnection.Bind(networkCredential);

1 个答案:

答案 0 :(得分:1)

不,您绝对无法通过密码传递MD5哈希来创建新的NetworkCredential。那会破坏哈希的观点。您可以传递纯文本密码或仅包含密码的SecureString