首页 > 其他分享 >从Active Directory中获取用户信息

从Active Directory中获取用户信息

时间:2025-01-19 10:57:42浏览次数:3  
标签:sbUserInfo return string DirectoryEntry 获取 NewLine Environment Directory Active

在用户通过AD验证后《基于Active Directory的用户验证》,下一步检索用户信息并显示。

1. 从AD中检索用户信息

/// <summary>

/// This will return a DirectoryEntry object if the user does exist

/// </summary>

/// <param name="UserName"></param>

/// <returns></returns>

public static DirectoryEntry GetUser(string UserName)

{

      //create an instance of the DirectoryEntry

      DirectoryEntry de = GetDirectoryObject();

      //create instance of the direcory searcher

      DirectorySearcher deSearch = new DirectorySearcher();

      

      deSearch.SearchRoot =de;

      //set the search filter

      deSearch.Filter = "(&(objectClass=user)(objectCategory=person)(sAMAccountName=" + UserName + "))";

      deSearch.SearchScope = SearchScope.Subtree;

    

      //find the first instance

      SearchResult results= deSearch.FindOne();

      //if found then return, otherwise return Null

      if(results !=null)

      {

            de= new DirectoryEntry(results.Path,ADUser,ADPassword,AuthenticationTypes.Secure);

            //if so then return the DirectoryEntry object

            return de;

      }

      else

      {

            return null;

      }

}

创建DirectoryEntry对象实例,注意这里的ADUser/ADPassword不是普通用户帐户,而是具有Account Operator或Administrator的权限。 ADPath可以为空,因为轻量目录访问协议 (LDAP) 提供程序依靠 Windows定位器服务来查找客户端的最佳域控制器 (DC)。但是,要利用无服务器绑定功能,客户端必须在 Active Directory 域控制器上具有帐户,而且无服务器绑定所使用的域控制器将始终位于默认域(与执行绑定的线程的当前安全上下文关联的域)中。(From MSDN)

/// <summary>

/// This is an internal method for retreiving a new directoryentry object

/// </summary>

/// <returns></returns>

private static DirectoryEntry GetDirectoryObject()

{

      DirectoryEntry oDE;

      

      oDE = new DirectoryEntry(ADPath, ADUser, ADPassword, AuthenticationTypes.Secure);

      return oDE;

}

2. 示例-简单显示AD中帐户属性及属性值

这里简单以string的形式输出:

public string GetUserInfo(string UserName)

{

      DirectoryEntry objDirEnt= ADHelper.GetUser(UserName);

      StringBuilder sbUserInfo = new StringBuilder();

      sbUserInfo.Append("Name = " + objDirEnt.Name + Environment.NewLine);

      sbUserInfo.Append("Path = " + objDirEnt.Path + Environment.NewLine + Environment.NewLine);

      sbUserInfo.Append("SchemaClassName = " + objDirEnt.SchemaClassName + Environment.NewLine);

      sbUserInfo.Append("***" + Environment.NewLine);

      sbUserInfo.Append("Properties:" + Environment.NewLine);

      foreach(String Key in objDirEnt.Properties.PropertyNames) 

      {

            sbUserInfo.AppendFormat("\t{0} = ", Key);

            sbUserInfo.Append("");

            foreach(Object objValue in objDirEnt.Properties[Key]) 

            {

                  sbUserInfo.AppendFormat("\t\t{0}" + Environment.NewLine, objValue);

           }

      }

      return sbUserInfo.ToString();

}

也可以直接访问需要的属性:

string strFirstName = =GetProperty(userSearchResult,"givenName");

/// <summary>

/// This is an override that will allow a property to be extracted directly from

/// a searchresult object

/// </summary>

/// <param name="searchResult"></param>

/// <param name="PropertyName"></param>

/// <returns></returns>

public static string GetProperty(SearchResult searchResult, string PropertyName)

{

      if(searchResult.Properties.Contains(PropertyName))

      {

            return searchResult.Properties[PropertyName][0].ToString() ;

      }

      else

      {

            return string.Empty;

      }

}

具体用户界面User Interface,请参考如下Reference 1.

References:

1. Rickie, 更新Active Directory/Exchange Address Book的小工具

2. Craig Aroa, ADHelper - An Active Directory Class, http://www.c-sharpcorner.com/Code/2002/Sept/ADClass.asp

3. Rickie, 基于Active Directory的用户验证

标签:sbUserInfo,return,string,DirectoryEntry,获取,NewLine,Environment,Directory,Active
From: https://blog.csdn.net/biyusr/article/details/144979349

相关文章

  • Edu邮箱免费获取Photoshop等设计软件
    大家好!今天想跟大家分享一个对设计师和程序员来说的超级福利。如果你拥有Edu教育邮箱,可以免费使用Photoshop等Adobe系列软件,以及JetBrains的开发工具,这真是提升工作效率的绝佳机会!首先,Photoshop作为行业标准的图像处理软件,能够帮助你轻松处理照片、设计海报或制作插图。而通过......
  • uniapp获取元素高度不准确问题解决
    uniapp通过boundingClientRect获取的元素高度和实际高度差了不少,下面是复现和解决过程:我的代码: 得到的结果: 高度只有105用工具量一下: 实际有240px,遂gpt问下: 注意到了缩放比这个之前没想到的点,往下面看gpt更多的回复内容: 先获取系统缩放比,再乘以拿到的......
  • 基于php的旅游网站旅游系统广西旅游网站php+mysql毕业设计php源码获取课程设计毕设指
    一、功能介绍该网站主题是旅游相关,实现了旅游景点、美食以及酒店的预定功能,并且实现了在线论坛。前台功能首页:旅游信息、酒店信息、美食信息旅游美食:列表、详情、下单酒店:列表、详情、下单景点:列表、详情、下单购物车、去下单、订单信息、评论在线论坛用户中心:我的订......
  • 有一个包含开始日期和结束日期的数组,获取最小的日期和最大的日期,用java实现
    packagecom.cfb.oa.m;importjava.time.LocalDate;importjava.util.ArrayList;importjava.util.List;classDateRange{LocalDatestartDate;LocalDateendDate;publicDateRange(LocalDatestartDate,LocalDateendDate){this.startDate......
  • 记一次GM220-S获取超级管理员密码的过程
    此方法只适用自己手上有逻辑ID的方法,事实上可以直接找宽带师傅要密码一、恢复出厂设置1.拔网线2.恢复出厂设置用细铁丝按住侧边的恢复出厂设置按钮,全亮之后灭了继续按别放手所有灯又再次变亮后又闪了俩遍后就可以松手了!全程最少20秒!二、开启telnethttp://192.168.1.1/usr=CM......
  • 多监控m3u8视频流,怎么获取每个监控的封面图(纯前端)
    文章目录1.背景2.问题分析3.解决方案3.1解决思路3.2解决过程3.2.1封装播放组件3.2.2隐形的视频div3.2.3截取封面图3.3结束1.背景有这样一个需求:给你一个监控列表,每页展示多个监控(至少12个,m3u8格式);且展示每个监控的第一帧画面的封面图,但是后端没给你返回封面图......
  • JAVA:根据经纬度获取夏令时以及偏移(免费)
    注:国内根据经纬度来获取夏令时区以及时区偏移量的api的服务有百度和谷歌,但是谷歌的获取夏令时和时区的api在国内服务其上部署时访问不了的(看过有在服务器上安装代理的,但是操作有点复杂。好吧,其实是我看着步骤太多,感觉太麻烦所以直接pass了)。所以目前在我获取到的信息中,只有百......
  • HTML应用指南:利用GET请求获取星巴克门店数据
    本篇文章,我们将探究GET请求的实际应用,我们使用Python的requests库通过GET请求抓取星巴克门店信息。星巴克作为全球知名的咖啡连锁品牌,其门店分布广泛,获取这些门店的信息对于数据分析、市场研究以及商业决策都具有重要意义。我们将以获取全国的星巴克门店为例,详细讲解请求的构......
  • HTML应用指南:利用GET请求获取全国特斯拉充电桩位置
    随着电动汽车的普及,充电基础设施的建设变得至关重要。作为电动汽车领域的先驱,特斯拉不仅在车辆技术创新上持续领先,还积极构建广泛的充电网络,以支持其不断增长的用户群体。为了提升用户体验和服务质量,开发人员和数据分析师经常需要访问特斯拉充电桩的位置信息,并将其集成到导航......
  • 股票API接口使用python、JAVA等多种语言实例代码演示免费获取实时数据、历史数据、CDM
    ​最新整理的股票API接口,下方所有接口链接均可直接点击验证,查看返回的数据。沪深两市股票列表股票API接口链接(可点击验证):https://api.mairui.club/hslt/list/LICENCE-66D8-9F96-0C7F0FBCD073【实时数据接口】沪深两市实时交易数据接口股票API接口链接(可点击验证):https:......