摘要:使用 PrincipalContext 做 AD 驗證
在 2.0 的時候,若要做 AD 驗證機制是使用 DirectoryServices 來進行實作,
但到了 3.5 ,要實作 AD 驗證比以往方便很多。
在實作之前需要將 System.DirectoryServices.AccountManagement.dll 加入參考
private static PrincipalContext _pc = null;//宣告PrincipalContext /// <summary> /// 驗證帳密 /// </summary> /// <param name="validType">驗證型態</param> /// <param name="UserName">使用者名稱</param> /// <param name="PassWord">使用者密碼</param> /// <returns>驗證通過回傳真值</returns> public static Boolean CheckUser(ValidType validType, String UserName, String PassWord) { try { String[] UserArray = UserName.Split(new char[] { '\\' }); //UserName 組合為 Domain\Account 或 MachineName\Account InitPC(validType, UserArray[0]); Boolean isValid = _pc.ValidateCredentials(UserArray[1], PassWord); return isValid; } catch (Exception ex) { String debug = ex.Message; return false; } }
/// <summary> /// PrincipalContext初始化 /// </summary> /// <param name="validType">驗證型態</param> /// <param name="LDAPName">網域/電腦名稱/應用程式名稱</param> static void InitPC(ValidType validType, String LDAPName) { //PrincipalContext pc = null; int typeNum = (int)validType; switch (typeNum) { case 1: _pc = new PrincipalContext(ContextType.Domain, LDAPName); break; case 2: _pc = new PrincipalContext(ContextType.Machine, LDAPName); break; case 3: _pc = new PrincipalContext(ContextType.ApplicationDirectory, LDAPName); break; default: break; } /// <summary> /// 驗證型態列舉 /// </summary> public enum ValidType { /// <summary> /// 網域 /// </summary> Domain = 1, /// <summary> /// 機器 /// </summary> Machine = 2, /// <summary> /// 應用程式 /// </summary> ApplicationDirectory = 3 } }
參考資料:PrincipalContext 類別
===================
大家好 , 我叫芋宅宅
我很菜 , 請各位前輩指教