Csharp/C#教程:Active Directory:检索用户信息分享


Active Directory:检索用户信息

我有一个使用我们的Active Directory运行Windows身份validation的Web应用程序。 我有一个新的要求,从Active Directory条目中提取一些个人信息。 获取此信息的最简单方法是什么?

直接通过DirectoryEntry访问用户似乎是最直接的方法。 以下是我从第一个AD相关项目中学到的与AD相关的花絮:

如果你不知道它的路径,你可能需要使用DirectorySearcher来获取用户的目录条目(你只需要让他登录就不会知道)。 使用它相当容易,但要注意LDAP语法中的怪癖; 即,必须编码非ASCII(和其他?)字符。 您使用的搜索字符串可能类似于: (&(sAMAccountName = whatever)(class = user)) 。 这是我的头顶,可能会略有不正确。

Active Directory架构参考将非常有用。 请理解可以修改和扩展架构(例如,安装Exchange会将邮箱信息添加到用户)。

AD Explorer是一个非常有用的工具,可用于调试和低级AD数据管理。 当我知道要设置哪个属性但在AD管理工具中找不到正确的对话框时,我发现它很有用。

您可能会发现以下代码段可用作启动器。

public static bool IsUserInGroup(string lanid, string group) { DirectoryEntry entry = new DirectoryEntry("LDAP://" + LDAPPATH); if(entry != null) { entry.Username=@"LDAPUSER"; entry.Password="LDAPPASSWORD"; DirectorySearcher srch = new DirectorySearcher(entry); srch.Filter = String.Format("(&(objectClass=person)(sAMAccountName={0}))", lanid); srch.PropertiesToLoad.Add("memberOf"); SearchResult result = srch.FindOne(); if(result != null) { if(result.Properties.Contains("memberOf")) { string lookfor = String.Format("cn={0},", group.ToLower()); foreach(string memberOf in result.Properties["memberOf"]) { if(memberOf.ToLower().StartsWith(lookfor)) return true; } } } return false; } throw new Exception(String.Format("Could not get Directory lanid:{0}, group{1}", lanid, group)); } 

一个非常好的参考: Howto :(几乎)通过C#在Active Directory中的一切

看看System.DirectoryServices命名空间:

System.DirectoryServices命名空间

我使用标准LDAP库从Active Directory服务器检索信息,但您必须validation所需数据是否可通过LDAP服务器架构获得。 通常,您可以获取存储在InetOrganizationalPerson中的任何信息以及与其所属组相关的大部分信息。

上述就是C#学习教程:Active Directory:检索用户信息分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/983713.html

(0)
上一篇 2021年12月19日
下一篇 2021年12月19日

精彩推荐