[C#][LDAP]使用LDAP 身份驗證

前一陣子一陣兵荒馬亂中,有一個需求是某網站要改用LDAP登入

程式碼如下:

using System.DirectoryServices.Protocols;
using System.Net;

//LDAP 登入驗證
//LDAP.ValidateLDAPUser("網域", "帳號", "密碼");
public static bool ValidateLDAPUserV2(string Domain, string UserName, string Password)
{
    try
    {
        using (var ldapConnection = new LdapConnection(new LdapDirectoryIdentifier(Domain)))
        {
            //設定要使用的LDAP通訊協定版本
            ldapConnection.SessionOptions.ProtocolVersion = 3;
            //如果啟用 Secure Sockets Layer,則這個屬性為 true,否則為 false
            ldapConnection.SessionOptions.SecureSocketLayer = false;
            //LDAP登入身份, 若設定為Anonymous則為匿名登入
            ldapConnection.AuthType = AuthType.Negotiate; //AuthType.Negotiate,AuthType.Basic;
            //設定登入帳號&密碼
            //ldapConnection.Credential = new NetworkCredential("帳號", "密碼");
            ldapConnection.Credential = new NetworkCredential(UserName, Password);
            //連線
            ldapConnection.Bind();
            Debug.WriteLine("Successfully authenticated to ldap server " + Domain);
            return true;
        }

    }
    catch (LdapException e)
    {
        if (e.Message == "提供的認證無效。")
        {
            WriteDebugLine("帳密不對");
        }
        else
        {
            WriteDebugLine(("Error with ldap server " + Domain + e.ToString()));
        }
        return false;
    }
}

參考資料:
[C#]LDAP資料同步

嘗試以自己的角度來整理並紀錄,也許會對一些人有幫助。

文章有錯、參考聯結有漏或是連結失效..等,還請幫忙告知,謝謝。
另外參考資料中有很多更棒的文章,建議多看看。