前一陣子一陣兵荒馬亂中,有一個需求是某網站要改用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資料同步
嘗試以自己的角度來整理並紀錄,也許會對一些人有幫助。
文章有錯、參考聯結有漏或是連結失效..等,還請幫忙告知,謝謝。
另外參考資料中有很多更棒的文章,建議多看看。