我正在替换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);
答案 0 :(得分:1)
不,您绝对无法通过密码传递MD5哈希来创建新的NetworkCredential
。那会破坏哈希的观点。您可以传递纯文本密码或仅包含密码的SecureString
。