使用 PrincipalContext 做 AD 驗證

摘要:使用 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 類別

===================

大家好  , 我叫芋宅宅

我很菜 , 請各位前輩指教