• 使用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

  • 相关阅读:
    cocos2dx的MotionStreak.cpp解析(-)
    gcc/g++基本命令简介
    C++编译器与链接器工作原理
    简单介绍 ARC 以及 ARC 实现的原理
    求两个链表表示的数的和
    对象内存结构中的 isa 指针是用来做什么的?
    按层遍历二叉树的节点
    一个 Objective-C 对象的内存结构是怎样的?
    创建一个可以被取消执行的 block
    TCP&UDP
  • 原文地址:https://www.cnblogs.com/YoungPop-Chen/p/3337415.html
Copyright © 2020-2023  润新知