从端点计算机获取组和OU成员身份信息

时间:2011-02-22 08:15:43

标签: c# active-directory ldap saas directoryservices

简介(如果冗长,请原谅我): 我现有的产品在端点计算机上运行。 它是用C#2.0编写的(所以我们谈论的是Win OS)并在SYSTEM凭证作为服务运行。 我还有一个服务器端管理程序,除了其他功能之外,还使用与目录提供程序(Active Directory或Novell)的直接连接来显示组织域树。

但是 - 现在我希望转换为SaaS模型 - 这意味着服务器不会驻留在组织内的主机上 - 因此不再与目录提供程序建立直接连接。

为了仍然能够构建组织域树,我决定通过向客户端发送的日志添加有关域结构的信息来解决此问题。 (如果你有更好的主意,请告诉我 - 虽然这还不是问题)。

我的问题是 - 如何获取域信息? 我使用LDAP和DirectoryServices库进行了一些尝试,并设法从DC获取我需要的所有信息 - 但只有当具有足够凭据的用户登录到计算机时... 如何编写在端点计算机上作为服务运行的代码,并且(至少)可以告诉计算机的组和OU成员以及登录用户?

非常感谢!

[编辑:]找到了一些东西!在注册表中,在[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Group Policy \ State \ Machine]下 - “Distinguished-Name”保存计算机的完整LDAP路径。我仍然需要团体会员资格。

2 个答案:

答案 0 :(得分:0)

如果您使用的是System.DirectoryServices,则可以在DirectoryEntry构造函数中指定用户名和密码:

DirectoryEntry de = new DirectoryEntry("domain ldap path",username, password);

如果使用System.DirectoryServices.AccountManagement,PrincipalContext的构造函数可以选择Domain,user,password。因此,您可以作为请求的一部分进行身份验证。

PrincipalContext p = New PrincipalContext(ContextType.Domain, DomainName, Username, Password);

答案 1 :(得分:0)

您可以将服务设置为以NetworkService身份登录吗?然后,您应该能够查询目录,至少。