如何在Visual Studio 2005中告诉我的webservice在哪个帐户下运行

时间:2009-04-23 20:35:35

标签: windows security asmx impersonation

我试图理解关于冒充和委派的文档有点疯狂,问题出现在我的web服务运行的帐户上。

我在名为JOHNXP的开发工作站上以myDomainName \ johna身份登录。从Vstudio2005开始我通过Debug启动我的web服务,wsdl页面出现在我的浏览器中。

从任务管理器中,我在.asmx代码中的断点处看到以下内容:

aspnet_wp.exe pid = 1316 UserName = ASPNET devenv.exe pid = 3304 UserName = johna

托管我的ws.asmx代码的虚拟目录的IIS目录安全性选项卡具有“启用匿名访问”UNCHECKED并具有“集成Windows身份验证”CHECKED。

因此,当MSDN人员声明“您必须配置运行服务器进程的用户帐户”时,如果我上面描述了我的小型Web服务,他们将会引用什么?

我引用自:       http://msdn.microsoft.com/en-us/library/aa302400.aspx

最终,我希望我的这个网络服务模仿任何经过身份验证的域用户浏览到我的webservice的调用。我的webservice反过来在另一台服务器(但是同一个域)上使用另一个ASMX web服务。我需要这个远程Web服务来使用模拟的域用户凭据(不是我在JOHNXP上的webservice的凭据)。

所以我对此有点了解,并且我发现我不清楚我的网络服务使用的帐户。我认为它是WinXP上的IIS 5.1中的ASPNET但不确定。

2 个答案:

答案 0 :(得分:2)

默认情况下,在ASP.NET之上运行的任何应用程序(包括ASMX Web服务)都将在 ASP.NET计算机帐户(ASPNET)安全上下文下执行,该安全上下文在主机上具有受限制的权限

可以通过启用模拟来更改此行为,这将导致ASP.NET应用程序在经过身份验证的用户或特定用户帐户的安全上下文中执行。在Web.config文件中启用了模拟:

<system.web>
  <!-- ASP.NET runs as the authenticated user -->
  <identity impersonate="true" />
</system.web>

<system.web>
  <!-- ASP.NET runs as the specified user -->
  <identity impersonate="true"
            username="DOMAIN\user"
            password="password" />
</system.web>

在IIS中启用集成Windows身份验证并且禁用匿名Internet用户帐户时,经过身份验证的用户将是发出HTTP请求的客户端的Windows标识。
启用模拟后,ASP.NET工作进程在处理请求时将使用相同的标识。

答案 1 :(得分:2)

顺便说一句,除了答案之外,上面应该是:

<system.web>
  <!-- ASP.NET runs as the specified user -->
  <identity impersonate="true"
            userName="DOMAIN\user"
            password="password" />
</system.web>

用户名需要大写的N - >的userName

希望这有帮助

相关问题