摘要:使用 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 類別
===================
大家好 , 我叫芋宅宅
我很菜 , 請各位前輩指教