using System;
using System.Collections.Generic;
using System.Configuration;
using System.DirectoryServices;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace WuZiFenGongSiInfomation.Common
{/// <summary>/// 域用户验证/// </summary>/// 2019-11-13 17:35:23 王浩力 添加public class ActiveDirectoryHelper{////// LDAP绑定路径,参考域地址LDAP://ptr.petreoshcna///private static string ADPath = ConfigurationManager.AppSettings["ptr"];/// <summary>/// 通过用户名密码验证是否能够登录/// </summary>/// <param name="Account"></param>/// <param name="Password"></param>/// <returns>返回true表示账号密码正确,登录验证通过</returns>public static bool Validate(string Account, string Password){DirectoryEntry Entry;//创建验证用的实例DirectoryEntry entry = new DirectoryEntry(ADPath, Account, Password);try{object obj = entry.NativeObject;DirectorySearcher search = new DirectorySearcher(entry);//搜索条件是SAMAccountNamesearch.Filter = "(SAMAccountName= " + Account + ") ";search.PropertiesToLoad.Add("cn");//获取搜索结果Entry = search.FindOne().GetDirectoryEntry();return true;}catch{return false;}}///   <summary> ///   读取AD用户信息   2019-11-13 17:52:30 王浩力 添加///   </summary> ///   <param   name= "ADUsername "> 用户 </param> ///   <param   name= "ADPassword "> 密码 </param> ///   <param   name= "domain "> 域名 </param> ///   <returns></returns> public static SortedList<string, string> AdUserInfo(string ADUsername, string ADPassword){System.DirectoryServices.DirectorySearcher src;//string ADPath = "LDAP:// " + domain;//   "ou=总公司,DC=abc,DC=com,DC=cn ";   + ",ou=总公司 " //string ADPath = ADPathstring domain = ADPath.Replace("LDAP://", "");SortedList<string, string> _sortedList = new SortedList<string, string>();string domainAndUsername = domain + @"\" + ADUsername;System.DirectoryServices.DirectoryEntry de = new System.DirectoryServices.DirectoryEntry(ADPath, domainAndUsername, ADPassword);src = new System.DirectoryServices.DirectorySearcher(de);src.Filter = "(SAMAccountName=" + ADUsername + ")";//   此参数可以任意设置,但不能不设置,如不设置读取AD数据为0~999条数据,设置后可以读取大于1000条数据。 src.PageSize = 5;//   src.SizeLimit   =   2000; src.SearchScope = System.DirectoryServices.SearchScope.Subtree;try{var list = src.FindAll();LogHelpter.AddLog("获取用户信息成功");string json = Newtonsoft.Json.JsonConvert.SerializeObject(list);LogHelpter.AddLog("获取用户信息:");LogHelpter.AddLog(json);/**  返回的参考格式[{"Path": "LDAP://ptr.1998/CN=张飞,OU=大理寺,OU=三法司,OU=刑部,OU=西南区域中心,DC=ptr,DC=1998","Properties": {"sn": ["张"],"givenname": ["飞"],"samaccountname": ["zyw2018"],"cn": ["张飞"],"pwdlastset": [132064379393008820],"whencreated": ["2018-12-19T08:23:44"],"accountexpires": [9223372036854775807],"displayname": ["张飞"],"lastlogon": [132103071131352438],"samaccounttype": [805306368],"countrycode": [0],"objectguid": ["hG/roK368Uqqw5kiTo0bzQ=="],"lastlogontimestamp": [132102380907396197],"usnchanged": [21787838],"whenchanged": ["2019-08-14T06:54:50"],"name": ["张飞"],"objectsid": ["AQUAAAAAAAUVAAAAilpBYELHdFIH5TsrrLwQAA=="],"logoncount": [1],"instancetype": [4],"primarygroupid": [513],"objectcategory": ["CN=Person,CN=Schema,CN=Configuration,DC=ptr,DC=1998"],"userprincipalname": ["zyw2018@1998.com.cn"],"msexchuseraccountcontrol": [0],"useraccountcontrol": [66048],"dscorepropagationdata": ["2019-06-13T03:16:25", "1601-01-01T00:00:01"],"distinguishedname": ["CN=张飞,OU=大理寺,OU=三法司,OU=刑部,OU=中心1,DC=ptr,DC=1998"],"objectclass": ["top", "person", "organizationalPerson", "user"],"usncreated": [2890900],"memberof": ["CN=刑部,OU=刑部,OU=中心1,DC=ptr,DC=1998"],"mail": ["zyw2018@1998.com.cn"],"adspath": ["LDAP://ptr.1998/CN=张飞,OU=大理寺,OU=三法司,OU=刑部,OU=中心1,DC=ptr,DC=1998"],"department": ["大理寺.昝世堂"],"codepage": [0],"company": ["刑部"]}
}]**/dynamic data = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(json);string prop = Convert.ToString(data[0].Properties);var sortedDict = Newtonsoft.Json.JsonConvert.DeserializeObject<SortedList<string, string[]>>(prop);//用户姓名string userName = sortedDict["name"][0];string departmentStr = sortedDict["distinguishedname"][0];//公司string company = departmentStr.Split(',')[2].Replace("OU=", "").Trim();//部门string department = departmentStr.Split(',')[1].Replace("OU=", "").Trim();string companyDepartment = company + ">" + department;_sortedList.Add("userName", userName);_sortedList.Add("department", companyDepartment);}catch (System.Exception ex){Console.WriteLine(ex.Message);LogHelpter.AddLog(ex.ToString());//throw new Exception("Get   Ad   Info ", ex);}return _sortedList;}}
}

C# AD域账号登录验证,获取域用户信息相关推荐

  1. (详解)钉钉接口,PC端微应用,免登录及获取当前用户信息

    1.用了两天的时间,一直在研究微应用的,免登录及获取用户信息这一块. 但是钉钉官网写的太繁杂了,看了一天,硬是没看明白,最后,硬着头皮,一点点查资料,借鉴别人的代码,终于 研究 出来了,为了防止 年轻 ...

  2. QQ第三方登录以及获取对应用户信息详解

    第一步:在腾讯开放平台注册应用,获取应用的appID以及AppSecret. 第二步:在腾讯开放平台下载sdk,并导入进项目.(详细步骤看官方文档http://wiki.open.qq.com/wik ...

  3. libnss mysql_Ubuntu通过LDAP集成AD域账号登录(libnss-ldap方式)

    Ubuntu通过LDAP集成AD域账号登录(libnss-ldap方式): # apt-get install libnss-ldap   (中间直接回车,忽略) # vi /etc/nsswitch ...

  4. Centos7加入AD域并通过域账号登录

    环境: windows server 2012系统安装AD域服务,安装完毕创建用户,安装过程百度搜索. 创建用户 打开服务器管理器–AD DS-右击服务器选择–AD用户和计算机 创建组织单位 选择你安 ...

  5. 通过组策略实现IE自动以当前域账号登录某站点

    SharePoint基于windows验证的如何通过组策略实现IE自动以当前域账号登录某站点 1. 在运行中运行MMC,启动"组策略对象编辑器". 如下图: 2.找到组策略,如下图 ...

  6. Ubuntu加域后域账号登录账号串号

    Ubuntu加域后域账号登录账号串号 错误实例 原因分析 解决办法 错误实例 例如这里用账号test01登录Ubuntu桌面,进入桌面后进入终端 test02@PCtest01:~$ 这里可以看出账号 ...

  7. 通过无线网登陆域服务器,Win10系统如何设置域账号连接企业内部域wifi

    在Win10系统中,如果没有加入域的话,是不能自动以USER帐号连接企业内部域WIFI,那么我们可以经过一些设置来让域账号连接企业内部域wifi,下面给大家讲解一下具体的设置步骤. 1.首先,点击屏幕 ...

  8. win7系统添加wifi连接到服务器,手把手解决win7系统设置域账号连接企业内部域wifi的修复步骤...

    许多win7系统用户在工作中经常需要对win7系统设置域账号连接企业内部域wifi进行设置,比如近日有用户到本站反映说win7系统设置域账号连接企业内部域wifi的问题,但是却不知道要怎么设置win7 ...

  9. Spring学习笔记(二十三)——实现网站微信扫码登录获取微信用户信息Demo

    目录 微信扫码登录介绍 开发步骤 微信扫码登录示例 微信开放文档 遇到的问题 使用第三方工具实现网站微信扫码登录 开发前介绍 开发步骤 微信扫码登录获取微信用户信息Demo实现流程 实现效果 实现过程 ...

最新文章

  1. 使用Spring框架开发会遇到的所有异常及解决方案(持续更)
  2. SAP IBASE hierarchy remove - debug in ERP step1
  3. Java GC系列(4):垃圾回收监视和分析
  4. PMP读书笔记(第3章)
  5. Linux下快速搭建DNS服务器
  6. .NET面试题系列(七)IIS
  7. iphone如何信任软件_【手机软件】千禾影院:全新观影神器,支持安卓+iOS,最新、最全、高清、免费!...
  8. Python弹窗提示警告框MessageBox
  9. Mybatis3 源码解析系列
  10. 如何把大咖的知识,内容、思维,瞬间变成你的知识内容思维的秘诀
  11. android-- dp px sp长度单位的区别
  12. 【转】卡巴斯基安全公告称甲骨文数据库存在加密漏洞
  13. 2017 CCPC Final小结 By JSB @ Reconquista
  14. SpringBoot 中如何使用JSP页面开发?
  15. 计算机网络安全论文怎么答辩,计算机网络论文答辩自述及常见问题.doc
  16. 细数SAP Business One主流实施与服务商
  17. C# 简单判断枚举值是否被定义
  18. 【雅思大作文考官范文】——第十三篇:'traditions and technology' essay
  19. 【图像识别-指纹识别】指纹特征提取附matlab代码
  20. 无法与ftp服务器建立连接

热门文章

  1. 支持向量机(SVM)MATLAB 实例讲解,及选择训练方式使误差率尽可能减为0
  2. 十大优质外盘炒黄金平台排名
  3. Spark 图计算实战
  4. 朱慕慕:ui设计包括什么内容,ui设计包括有几部分内容?
  5. 牛顿法及其下山法+C代码
  6. What?Tomcat 竟然也算中间件?
  7. 20 React项目生成及部署
  8. git fatal: unable to access '/': schannel: next InitializeSecurityContext error (0x80092013)
  9. Vue中使用SVG-ICON
  10. go语言学习-- chan与goroutine