3

我有点疯了,试图理解关于模拟和委托的文档,问题是我的网络服务在哪个帐户下运行。

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

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

aspnet_wp.exe pid=1316 用户名=ASPNET devenv.exe pid=3304 用户名=johna

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

因此,当 MSDN 人员声明“您必须配置运行服务器进程的用户帐户”时,对于上述我的小 Web 服务,他们指的是什么?

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

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

所以对我来说理解这一点有点难听,我发现我不清楚我的网络服务使用的帐户。我认为它是 WinXP 上 IIS 5.1 中的 ASPNET,但不确定。

4

2 回答 2

3

默认情况下,在 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 工作进程在处理请求时将使用相同的标识。

于 2009-04-23T21:02:25.700 回答
3

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

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

用户名需要大写 N -> userName

希望这可以帮助

于 2009-11-19T16:15:53.297 回答