Tag: active directory

如何使用C#获取Active Directory中所有域的列表

任何人都可以帮助我获取Active Directory中的所有域。 我已经尝试了很多次,但所有程序都只列出了当前的工作域。 我怎样才能做到这一点?

UserPrincipal.GetGroups与UserPrincipal.GetAuthorizationGroups?

我正在使用ASP.Net 4.0 MVC来查询活动目录。 我试图获取用户的组成员资格列表,并迭代它们。 我有一个奇怪的问题。 获取我正在使用的组: PrincipalSearchResult groups = up.GetGroups(); 哪个在localhost上工作得很好但在移动到IIS6时返回一个空集。 所以我试着用这个: PrincipalSearchResult groups = up.GetAuthorizationGroups(); 哪个在IIS6上运行良好,但在localhost上返回一个空集。 这两种方法有什么区别? 为什么我可以在IIS6中使用一个而不在localhost上使用? 为什么我可以在localhost而不是IIS6中使用另一个?

在C#中,如何访问Active Directory以获取某个用户所属的组列表?

在C#中,如何访问Active Directory以获取某个用户所属的组列表? 用户详细信息的格式如下: “MYDOMAIN\myuser” 我一直在按照这里的说明进行操作,但只有在表格中有用户详细信息时才能使用它们: “LDAP://sample.com/CN=MySurname MyFirstname,OU=General,OU=Accounts,DC=sample,DC=com” 所以也许我要问的是,如何从第一个,更短的表格到下面的完全合格的表格? 非常感谢!

ActiveDirectoryMembershipProvider用于validation用户

我想使用ActiveDirectoryMembershipProvider的ValidateUser方法来validation用户是否存在于AD中。 我在表单中输入用户名和密码。 我想实例化提供程序并调用ValidateUser 我只是用post测试替换真值。 要做我想做的事情,我是否需要向提供商提供用户名和密码,以便它可以首先连接,即系统帐户..一旦建立,我可以检查我想要validation的用户? 谢谢,J

C#LDAP性能

在我工作的地方,我们有两种身份validation模式: CAS( http://www.jasig.org/cas ) LDAP CAS是主要方法,但在高峰时段通常不可靠,因此当我们注意到CAS停机时,我们一直使用LDAP作为后备模式。 以前,我们使用PHP来执行LDAP回退并获得合理的性能。 除了预期的网络延迟时间之外,登录期间没有明显的延迟。 使用LDAP完成登录大约需要250-500毫秒。 现在,我们正在创建一个新系统,并选择ASP.NET MVC4作为平台而不是PHP,我的任务是尝试让这个回退再次运行。 我已经把头发拉了大约6个小时,现在一遍又一遍地尝试不同的东西,得到相同的结果(也许我疯了)。 我终于设法连接到LDAP,validation用户身份,并从LDAP获取其属性。 但是,无论我尝试什么方法,查询始终需要4.5秒才能完成。 这让我感到非常惊讶 ,因为PHP版本能够在1/8的时间内完成几乎相同的事情,并且似乎.NET框架对LDAP / ActiveDirectory提供了出色的支持。 我做了一件非常可怕的错误吗? 以下是我现在的function内容(这是最新的迭代,可以在一个4.5秒的查询中完成所有操作): public Models.CASAttributes Authenticate(string username, string pwd) { string uid = string.Format(“uid={0},ou=People,o=byu.edu”, username); LdapDirectoryIdentifier identifier = new LdapDirectoryIdentifier(“ldap.byu.edu”, 636, false, false); try { using (LdapConnection connection = new LdapConnection(identifier)) { connection.Credential = new NetworkCredential(uid, pwd); connection.AuthType […]

Active Directory中联机的计算机列表

我正在使用这段代码输出我网络上所有计算机的列表(语言是jscript.net,但它只是对C#的一个小操作)。 var parentEntry = new DirectoryEntry(); parentEntry.Path = “WinNT:”; for(var childEntry in parentEntry.Children) { if(childEntry.SchemaClassName == “Domain”) { var parentDomain = new TreeNode(childEntry.Name); this.treeView1.Nodes.Add(parentDomain); var subChildEntry : DirectoryEntry; var subParentEntry = new DirectoryEntry(); subParentEntry.Path = “WinNT://” + childEntry.Name; for(subChildEntry in subParentEntry.Children) { var newNode1 = new TreeNode(subChildEntry.Name); if(subChildEntry.SchemaClassName == “Computer”) { parentDomain.Nodes.Add(newNode1); } } } […]

如何使用System.DirectoryServices.AccountManagement将用户添加到AD?

使用.net 3.5框架和C#我试图从C#向AD添加新用户,但找不到任何示例。 我看到PrincipalCollection对象有一个重载的’add’方法,但似乎无法弄清楚它是如何工作的。 有人可以帮忙吗? 如何创建新的用户对象,将其添加到AD中。 其次,将要添加新用户的用户可能实际上没有安全性来执行此操作。 有没有办法可以冒充其他具有权限的用户帐户并以这种方式添加帐户?

如何使用objectGUID获取DirectoryEntry?

我知道,我们可以像这样得到一个DirectoryEntry: string conPath = “LDAP://10.0.0.6/DC=wds,DC=gaga,DC=com”; string conUser = “administrator”; string conPwd = “Iampassword”; DirectoryEntry de = new DirectoryEntry(conPath, conUser, conPwd, AuthenticationTypes.Secure); 我们可以像这样更改用户的密码: DirectorySearcher deSearch = new DirectorySearcher(); deSearch.SearchRoot = de; deSearch.Filter = String.Format(“sAMAccountName={0}”, “xumai”); SearchResultCollection results = deSearch.FindAll(); foreach (SearchResult objResult in results) { DirectoryEntry obj = objResult.GetDirectoryEntry(); obj.Invoke(“setPassword”, new object[] { “Welcome99” }); obj.CommitChanges(); […]

如何在C#中的AD LDS条目上获得用户的有效权限?

我有使用AD LDS存储其分层数据的第三方应用程序,我需要在ASP.NET MVC中为此系统提供Web UI。 它在目录条目上使用DACL来控制用户对各个条目的访问权限。 我发现很少有好文章解释如何读取DirectoryEntry ActiveDirectoryAccessRules ,但我找不到任何有效的方法来计算特定用户的有效权限 。 是否有任何支持Microsoft API或库可用,或者我需要发明自己的方式? 调查类似主题的人的参考URL: 编写自己的AD / ADAM权限编辑器 – 3 .NET开发人员目录服务编程指南 C#中的访问控制列表

将NETBIOS域转换为FQDN(完全限定域名)

简而言之 – 如何将NETBIOS域转换为FQDN? 详细信息:假设我在域A中,并且我拥有域B的用户凭据,该域与域A具有信任关系(我可以对凭据进行身份validation)。 当我拥有的是来自该域的某个经过身份validation的用户的凭据(包括netbios域名)时,如何获取域B的FQDN? 我在C#编码,但COM / WMI / Win32解决方案也会受到欢迎。