我已经在我的虚拟机中设置了一个 Active Directory 服务器,并根据以下链接启用了 LDAP over SSL:https: //support.microsoft.com/en-us/kb/321051
我使用 ldp.exe 来测试我的设置,并能够连接到端口 636 并选中“SSL”复选框。然后我取消选中“SSL”复选框并再次尝试连接到端口 636。我预计连接会失败,因为端口 636 是为 LDAP over SSL 保留的。然而,令我惊讶的是,连接仍然通过。我很困惑。我可以使用端口 636 但没有 SSL 连接到 Active Directory 是否正常?
public static LdapConnection CreateLdapConnection(string server, int port, bool IsSSL, string userDN, string password, out string err)
{
err = null;
LdapConnection con = new LdapConnection(new LdapDirectoryIdentifier(server, port));
if (IsSSL)
{
con.SessionOptions.SecureSocketLayer = true;
con.SessionOptions.VerifyServerCertificate = new VerifyServerCertificateCallback(ServerCallback);
}
con.Credential = new NetworkCredential(userDN, password);
con.AuthType = AuthType.Basic;
try
{
con.Bind();
}
catch (Exception ex)
{
if (ex.Message.Contains("The supplied credential is invalid"))
{
err = "Invalid ldap user password";
}
else if (ex.Message.Contains("The LDAP server is unavailable"))
{
err = "Invalid server address or port number";
}
else
{
err = ex.Message;
}
}
return con;
}
我还使用上面的代码在我的应用程序中测试了 ldap 连接,并且当 IsSSL 变量为 false 时它能够连接。