次のリンクに従って、仮想マシンに Active Directory サーバーをセットアップし、LDAP over SSL を有効にしました: https://support.microsoft.com/en-us/kb/321051
ldp.exe を使用して設定をテストしたところ、ポート 636 に接続でき、「SSL」チェックボックスがオンになっていました。次に、「SSL」チェックボックスのチェックを外し、ポート 636 への接続を再試行しました。ポート 636 は LDAP over SSL 用に予約されているため、接続が失敗すると予想していました。しかし、驚いたことに、接続はまだ続いていました。私は困惑しています。SSL なしでポート 636 を使用して 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 の場合に接続できました。