我已在虚拟机中设置了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时它能够连接。
答案 0 :(得分:0)
可能使用StartTLS协议,以明文形式连接,然后客户端发出StartTLS,然后双方升级到SSL。