Tag: active directory

使用C#从ASP.Net MVC访问Active Directory

我需要访问Active Directory以获取有关客户所属组的信息。 我的项目是使用C#的ASP.Net MVC应用程序。 我之前从未编写过针对Active Directory的编程,并且需要一些关于最佳入门方法的建议,使用什么安全模型来访问信息,并且可能指向一些好的教程。

检索用户的自定义Active Directory属性

我一直在尝试检索在Active Directory用户上设置的两个自定义属性,但似乎我一直在获取一个常量的属性列表(在2个不同的AD服务器上测试) 假设我试图获取的属性是prop1和prop2 ,我在下面的代码中做错了什么: List nProps = new List(); DirectoryEntry directoryEntry = new DirectoryEntry(“WinNT://DOM”); foreach (DirectoryEntry child in directoryEntry.Children) { // No filtering; ignore schemes that are not User schemes if (child.SchemaClassName == “User”) { foreach (var sVar in child.Properties.PropertyNames) nProps.Add(sVar.ToString()); break; } } nProps不包含任何我的自定义属性(不是prop1也不是prop2 ) (它确实包含其他属性,如BadPasswordAttempts,用户名等) 有任何想法吗?

如何解决“服务器不支持控件。 控制很关键。“Active Directory错误

当我尝试从基于角色的AD中获取所有用户时,我得到了exception: System.DirectoryServices.Protocols.DirectoryOperationException:超出了大小限制 在这个线程的帮助下: LdapConnection SearchRequest抛出exception“超出大小限制我尝试实现分页。 现在我得到一个例外: 服务器不支持该控件。 控制至关重要。 关于如何解决它的任何想法? 我得到一个较小的基于角色的用户列表,没有分页。 谢谢。 更新:我发现代码检查AD是否支持分页iPlanet LDAP和C#PageResultRequestControl ,我得到的结果是支持分页。

即使pagesize设置为更大,directorysearcher对象的上限是5000

即使pagesize设置为更大,directorysearcher findall结果方法的上限是5000结果。 它似乎真的是,因为无论我得到什么5000结果。 这是C#

如何知道我的DirectoryEntry是否真的连接到我的LDAP目录?

我正在连接到C#中的LDAP目录,所以我使用了DirectoryEntry类。 使用地址,登录名和密码执行“new DirectoryEntry”时,应该连接到LDAP目录。 但是,即使连接不起作用,它也会毫无问题地返回,并且设置了directoryentry变量。 所以我知道我的连接真的开了吗? 现在,我正在使用一个非常非常丑陋的黑客:我放了一个“if(mydirectory.SchemaEntry)”,如果没有建立连接会产生exception,因为DirectoryEntry的某些成员,例如SchemaEntry,不是如果连接失败,则设置。 但是1:在丑陋的等级2上需要11/10:在失败之前需要花费很多时间。 那么这样做的好方法是什么? 当然,微软必须提供一些东西(即使我使用的是LDAP目录而不是Active Directory)来了解我是否真的已经连接了?

从可信域添加成员到AD组

我有两个域,在一个受信任的关系中,我正在尝试从C#Web应用程序进行管理。 要做到这一点,我必须冒充两个不同的技术用户,但这样做很好,所以我不会强调代码的那一部分。 为了构建适当且易于管理的文件系统ACL,我必须这样做 在domainA中创建一个组(OK!) 在domainB中找到一个用户(好的!) 将用户添加到组(提交更改时失败,错误消息: There is no such object on the server. (Exception from HRESULT: 0x80072030) ) 如果我正在添加来自同一域的用户,则代码可以正常运行,所以我相信我在这里只缺少一些小的部分信息。 我使用这个文档作为参考,也看到了这个问题 (还有一些引用了这个错误信息),但他们都没有帮助。 代码(删除了try-catch块以使其更简单) // de is a DirectoryEntry object of the AD group, received by the method as a parameter // first impersonation to search in domainB // works all right if (impersonator.impersonateUser(“techUser1”, “domainB”, “pass”)) […]

C# – 在活动目录中查找用户管理器

开始使用System.DirectoryServices.AccountManagement命名空间,对Active Directory(AD)中的用户执行查找。 我还需要用户的经理 ,但我似乎在使用这个命名空间遇到了麻烦。 获取一个人的当前代码: class Person { // Fields public string GivenName = null; public string Surname = null; public string DistinguishedName = null; public string Email = null; public string MangerDistinguishedName = null; // Unable to set this // Constructor public Person(string userName) { UserPrincipal user = null; try { user = GetUser(userName); […]

如何在具有多个树的AD林中的全局编录中搜索用户

我有以下带有两棵树的AD森林: 域1。 有两个子域Domain2和Domain3 Domain4。 没有子域名。 Domain1的DNS名称是domain1.local 。 Domain4的DNS名称是domain4.local 。 在每个域中都有一个启用了全局编录的域控制器。 我正在尝试通过其SID从域4获取UserPrincipal。 该程序从Domain2中的计算机运行。 我使用以下代码: // Running on some machine from Domain2 PrincipalContext context = new PrincipalContext( ContextType.Domain, “dc2.domain2.domain1.local:3268”, // Using Global Catalog port and local domain controller “DC=domain1, DC=local”, // I guess the problem is here “domain1\\super-admin”, // User has all necessary rights across all domains […]

使用LDAP连接到Active Directory的连接字符串

我的系统管理员给了我这个: 域名:capp.net USER:capp \ dhr2 通过:admin @ 12345 连接字符串是什么? 我对adfs非常新。 所以我试过这个: 我总是收到此错误:无法与服务器建立安全连接 我对连接字符串做错了。 我只是不知道如何解决它。

你能在C#中找到一个Active Directory用户的主要组吗?

我正在开发一个管理Active Directory中的用户帐户的应用程序。 我尽可能使用System.DirectoryServices.AccountManagement命名空间,但我无法弄清楚如何确定用户的主要组。 当我尝试删除作为用户主要组的组时,我得到一个例外。 这是我目前的代码: private void removeFromGroup(UserPrincipal userPrincipal, GroupPrincipal groupPrincipal) { TODO: Check to see if this Group is the user’s primary group. groupPrincipal.Members.Remove(userPrincipal); groupPrincipal.Save(); } 有没有办法获取用户主要组的名称,以便我可以在尝试从该组中删除用户之前进行一些validation?