asp.net 下利用DirectoryEntry验证用户及获取域控制器下的用户结构信息
在企业的众多应用软件中,每个用户对每个软件都需要记住登录的帐号和密码。时间久了,会忘记或搞混。管理人员在用户管理时也需要挨个软件去维护。确实很麻烦。解决的方法是要有统一的用户管理,同一个帐号可以登录多个软件。创建域用户是很好的解决方法。
一、用户的域验证,用户登录软件时,系统先把帐号和密码发送到域服务器进行验证,通过后才能使用软件。
创建 DirectoryEntry对象, 参数:域名(domain) 形如 xxxxx.com,域用户(domainAndUsername)形如 xxxxx.com\user ,域密码(pwd),域用户(user)= 用户登录帐号
C#代码:
DirectoryEntry entry = new DirectoryEntry(string.Format("LDAP://{0}",domain), domainAndUsername,pwd);string r = "ok";try{DirectorySearcher search = new DirectorySearcher(entry); //创建DirectoryEntry对象的搜索对象 search.Filter = "(SAMAccountName=" +user + ")"; //过滤条件为登录帐号=user SearchResult result = search.FindOne(); //查找第一个 if (null == result) //没找到 {r = "cancel";}}catch (Exception ex){r = ex.Message;}return r;
二、列举域控制器下的所有用户及组织
本例列举某公司下的组织及用户(组织结构:公司->部门->用户),运行软件的电脑须加入域才能读取域用户信息,如果是web,则发布的服务器也须加入域中。
//domain 域名称 user 域上的用户, pwd 域上的用户密码,root 公司名称 ou=root 表示该公司下的组织及用户 StringBuilder sb = new StringBuilder();try{ DirectoryEntry entry = new DirectoryEntry(string.Format("LDAP://{0}/OU={1},DC={2},DC={3}",domain, root, domain.Split('.')[0], domain.Split('.')[1]), domain + @"\" + user, pwd); DirectorySearcher mySearcher = new DirectorySearcher(entry); mySearcher.Filter = ("(objectClass=organizationalUnit)"); // 查找条件是entry 下的部门 sb.Append("[{id:'0',pid:null,text:'" + root + "',expand:true}"); int i = 1; foreach (SearchResult resEnt in mySearcher.FindAll()) //遍历所有部门 { string _a = resEnt.GetDirectoryEntry().Name.Split('=')[1]; if (_a != root) { sb.Append(",{id:'" + i.ToString() + "',pid:'0',text:'" + _a + "'}"); DirectorySearcher m1 = new DirectorySearcher(resEnt.GetDirectoryEntry()); //查找用户对象 m1.Filter = ("(objectClass=user)"); //查找条件是所有用户 foreach (SearchResult r1 in m1.FindAll()) //遍历该部门下的所有用户 { sb.Append(",{id:'" + r1.GetDirectoryEntry().Properties["sAMAccountName"][0].ToString()+ "',pid:'" + i.ToString() + "',text:'" + r1.GetDirectoryEntry().Properties["Name"][0].ToString() + "'}");}i++; } } sb.Append("]");
三、把返回的用户信息以树形方式显示在html 上
<div id="user" class="gtreeselect" data-options="{poupuWidth:240,leafNode:true,width:210,onChange:set}" ></div>
$(function () {jgui.post("/Data/getaduser", { domain: "gxdonta.com", user: "admin", pwd: "123456", root: encodeURIComponent("XXXXXX有限公司") },function (text) {jgui.get('user').setData(jgui.parseJSON(text));});});
asp.net 下利用DirectoryEntry验证用户及获取域控制器下的用户结构信息相关推荐
- 域服务器批量修改用户密码,Windows域控制器批量创建用户
Windows域控制器批量创建用户 猫先生 • 2019 年 06 月 05 日 之前做过VDI的项目,一百多个桌面,需要一百多个用户,我刚开始手动创建了5个,觉得这不是IT人干的事,要高效.网上找了 ...
- 如何查看域控计算机是哪个用户登陆,查看域控制器上登录用户
如何查看当前域控登录验证的用户?域内多台域控制器,如何查看某台域控制器上当前登录的用户或计算机?系统自动的工具好像没有实现此需求的办法,有无像脚本或者其他的思路来满足此需求呢?是指验证过的用户或计算机 ...
- EF Core下利用Mysql进行数据存储在并发访问下的数据同步问题
小故事 在开始讲这篇文章之前,我们来说一个小故事,纯素虚构(真实的存钱逻辑并非如此) 小刘发工资后,赶忙拿着现金去银行,准备把钱存起来,而与此同时,小刘的老婆刘嫂知道小刘的品性,知道他发工资的日子,也 ...
- 如何查看/统计当前AD域控制器的活动用户
最近公司想知道某台AD域控制器上当前连接了多少活动用户? 此前个人只知道以下不是非常完善且统计起来比较麻烦的方法: 方法1:查看共享会话数.(不完全准确) 方法2:查看当前的DNS记录.(这种方法统计 ...
- 域控如何查看计算机在线,查看域控制器上登录用户
如何查看当前域控登录验证的用户?域内多台域控制器,如何查看某台域控制器上当前登录的用户或计算机?系统自动的工具好像没有实现此需求的办法,有无像脚本或者其他的思路来满足此需求呢?是指验证过的用户或计算机 ...
- 怎么禁用域控下的计算机配置,怎样从Windows域环境下禁用USB口设备
我们来详解一下Windows识别USB设备主要通过两个文件,一个是Usbstor.pnf.另外一个是Usbstor.inf,当在电脑第一次使用USB设备之前禁用这两个文件即可达到我们的目标. 1.打开 ...
- android资源文件下的图片绝对路径,如何获取drawable目录下的图片绝对路径
Public DNS (公共域名解析服务) 114DNS 服务IP:114.114.114.114, 114.114.115.115 拦截 钓鱼病毒木马网站:114.114.114.119, 114. ...
- anaconda下利用git维护github仓库
anaconda下利用git维护github仓库 说实话,windows下利用github客户端维护github仓库是非常方便的,唯一不方便的是github客户端的下载安装,每次换电脑或重装系统都要装 ...
- PyCharm下利用pyqt对话框打开图片,显示
PyCharm下利用pyqt对话框打开图片,显示 PyCharm下利用pyqt对话框打开图片显示 1安装PyCharm Python PyQt5 Pycharm配置Pyqt 1添加Qtdesigner ...
- 利用单片机实现天气服务器获取指定位置天气数据
大家好,今天主要和大家聊一聊,如何利用单片机从心知天气服务器上获取到指定位置的天气数据,咱们先来了解一下心知天气吧! 目录 第一:天气数据API 第二.通信原理图以及数据解析 第三.天气数据返回结果 ...
最新文章
- “诺奖风向标”沃尔夫奖出炉:数学颁给表示论,物理颁给激光
- 皮一皮:现在真是键盘侠的年代阿....
- Python爬虫应用实战案例-xpath正则表达式使用方法,爬取精美壁纸
- 另一个程序正在使用此文件 进程无法访问 iis
- java 手动编译打包_Maven 手动添加第三方依赖包及编译打包和java命令行编译JAVA文件并使用jar命令打包...
- c++ 结构体构造函数使用总结 附一道经典模拟题
- Linux redhat下安装jdk-6u45-linux-x64.bin
- 【新插件发布】AzureAD运维Excel版插件,增删改查快10倍c以上!
- python实现实时监控_基于 Python 的交换机实时监控系统的设计与实现
- 由项目中的一个小问题所联想到的。
- HDU 6336 Matrix from Arrays (杭电多校4E)
- Sphinx 使用心得
- CRM对于企业管理有哪些突破性价值?
- Mac下Eclipse SVN 更换账号
- 记一次Openwrt使用ssh连接失败的经验
- html编码器是什么意思,编码器是什么意思
- 人人网2017暑假实习生招聘-一面
- 2022保育员(高级)考试模拟100题及在线模拟考试
- X位的有/无符号整数
- 从零开始之驱动发开、linux驱动(二十五、framebuffer 子系统框架)