从ASP.NET Web应用程序访问Active Directory时的权限问题?

时间:2011-07-15 11:42:07

标签: asp.net visual-studio-2005 active-directory windows-xp iis-5

我刚加入一家公司,以支持一个没人知道的网络应用程序。所有曾经知道的人都已经离开了。

该应用程序正在使用dll(我只有二进制文件),用于获取用户所属的Active Directory组的字符串列表。代码在生产中工作,当我在VS2005 IDE中以交互方式运行时,但在IIS中本地运行它时不起作用。

代码是这样的。它在第127行爆炸:

Line 127:            userGroups = new FW.DirectoryHelper(username).getGroups();
Line 128:            List<string> roles = new List<string>();
Line 129:            List<string> groups = new List<string>();

出现此错误:

获取群组信息时出错。指定的域名不存在或无法联系。

这看起来像ASPNET帐户无法访问Active Directory的某种问题,但为什么它以交互方式工作但不在IIS下工作?这是因为当我运行interactivevely时,我使用自己的凭据而不是ASPNET帐户运行?为什么它会在其他(例如,UAT)IIS服务器上运行,包括生产而不是本地?

我是否需要制作一些本地IIS配置或fodler安全配置才能使其在本地运行?

二进制文件肯定会在我公司的其他地方使用;我认为这是一个共享的IT实用工具,任何人都不会支持或试图找到一个难以证明的人。

我的本​​地IIS配置了Windows身份验证已启用且匿名已关闭。我也试过Windows Auth on和Anonymous ......

4 个答案:

答案 0 :(得分:1)

您的问题与我最近回答的问题非常相似,他们也使用IIS 5.1。

Is it possible to retrieve data from Active Directory by impersonating a Windows authenticated user in ASP.NET?

在我的回答中,我提供了几种可能的解决方案,您可能想要做的是使用ASP.Net模拟。

答案 1 :(得分:1)

代码正在使用ldap的windows登录凭据,无论哪个pc正在运行该程序。尝试将iis设置为匿名访问,并为其提供一个具有ldap阅读权限的帐户(可能是假人)。在您的web.config文件中,您将要设置此匿名帐户,如下所示:

<system.web>
<identity userName="DOMAIN\username" password="myPW"/>
</system.web>

答案 2 :(得分:0)

这是IIS6还是7?

如果II6确保应用程序池标识设置为域帐户的标识。

如果IIS7确保在“基本设置”下将其设置为域帐户。

希望这是帮助。

答案 3 :(得分:0)

快速解决方法是将本地IIS的标识设置为使用您的登录凭据而不是默认系统帐户。