zoukankan      html  css  js  c++  java
  • 使用httpContext做AD认证

    在 2.0 的時候,若要做 AD 驗證機制是使用 DirectoryServices 來進行實作,

    但到了 3.5 ,要實作 AD 驗證比以往方便很多。

    在實作之前需要將 System.DirectoryServices.AccountManagement.dll 加入參考

     

    01 private static PrincipalContext _pc = null;//宣告PrincipalContext
    02         /// <summary>
    03         /// 驗證帳密
    04         /// </summary>
    05         /// <param name="validType">驗證型態</param>
    06         /// <param name="UserName">使用者名稱</param>
    07         /// <param name="PassWord">使用者密碼</param>
    08         /// <returns>驗證通過回傳真值</returns>
    09         public static Boolean CheckUser(ValidType validType, String UserName, String PassWord)
    10         {
    11             try
    12             {
    13                 String[] UserArray = UserName.Split(new char[] { '\' }); //UserName 組合為 DomainAccount 或 MachineNameAccount
    14                 InitPC(validType, UserArray[0]);
    15                 Boolean isValid = _pc.ValidateCredentials(UserArray[1], PassWord);
    16                 return isValid;
    17             }
    18             catch (Exception ex)
    19             {
    20                 String debug = ex.Message;            
    21                 return false;
    22             }
    23         }
    01 /// <summary>
    02        /// PrincipalContext初始化
    03        /// </summary>
    04        /// <param name="validType">驗證型態</param>
    05        /// <param name="LDAPName">網域/電腦名稱/應用程式名稱</param>
    06        static void InitPC(ValidType validType, String LDAPName)
    07        {
    08            //PrincipalContext pc = null;
    09            int typeNum = (int)validType;
    10            switch (typeNum)
    11            {
    12                case 1:
    13                    _pc = new PrincipalContext(ContextType.Domain, LDAPName);
    14                    break;
    15                case 2:
    16                    _pc = new PrincipalContext(ContextType.Machine, LDAPName);
    17                    break;
    18                case 3:
    19                    _pc = new PrincipalContext(ContextType.ApplicationDirectory, LDAPName);
    20                    break;
    21                default:
    22                    break;
    23            }
    24  
    25 /// <summary>
    26    /// 驗證型態列舉
    27    /// </summary>
    28    public enum ValidType
    29    {
    30        /// <summary>
    31        /// 網域
    32        /// </summary>
    33        Domain = 1,
    34        /// <summary>
    35        /// 機器
    36        /// </summary>
    37        Machine = 2,
    38        /// <summary>
    39        /// 應用程式
    40        /// </summary>
    41        ApplicationDirectory = 3
    42    }
    43  
    44        }

    http://www.dotblogs.com.tw/orhuang/archive/2010/07/21/16677.aspx

  • 相关阅读:
    Win11安装跳过TPM的方法 Win11安装怎么跳过TPM
    选取文件,列举文件(含子文件夹),记录大小信息,限制文件层级
    选取文件夹,枚举文件及子文件夹
    数据库SQL中having和where的用法区别
    Environ 函数调用系统环境变量 电脑用户名等
    Notepad++正则表达式语法
    VB几种函数参数传递方法,Variant,数组,Optional,ParamArray
    Access导出到Excel方法汇总
    VBA编程自动导出生成Excel表
    LeetCode 136 只出现一次的数字
  • 原文地址:https://www.cnblogs.com/YoungPop-Chen/p/3337415.html
Copyright © 2011-2022 走看看