我正在编写一个C#应用程序来管理Active Directory域上的用户,组,权限等。我的应用程序目前仅在使用域管理员用户帐户在域计算机上运行时才有效。我想使用任何用户帐户在任何计算机上运行我的应用程序,无论域成员身份或权限如何。我不想在我的应用程序中存储管理员密码。这似乎是一项可以由证书处理的工作。
那么,我如何使用证书在AD域上验证我的应用程序,以便授予我的应用程序对域的管理权限,无论我的应用程序运行的上下文(用户,计算机等)如何?
我的应用程序使用System.DirectoryServices.DirectoryEntry对象来操作域。我希望我现有的代码尽可能保持完整,因此首选使用此API的解决方案。另外,如果可能的话,我想避免安装其他服务(例如IIS)。
以下代码似乎可以执行我想要的操作,但仍需要我的应用程序知道域管理员帐户的用户名和密码。
DirectoryEntry domain = Domain.GetDomain(new DirectoryContext(
DirectoryContextType.DirectoryServer,
"domain controller ip", "admin username", "admin password"))
.GetDirectoryEntry();
如果我能完全按照上面的代码进行操作,但使用证书代替用户名和密码,我就可以使用。