2

在我的 ASP.NET 应用程序中,我使用 WebClient 下载文件。该文件几乎总是在公司内部网上,并且需要访问权限。每当我在 VS 中运行应用程序时,它都能正常工作,因为它是在我自己权限的上下文中运行的。但是,当它部署到 IIS 时,它在“网络服务”权限的上下文中运行,而对于 Intranet,这些权限基本上不存在(如您所料)。

我可以在这里看到一些糟糕的解决方案:

  • 专门为应用程序创建一个帐户,其详细信息将位于 web.config 并作为字符串提供给 WebClient。这是次优的,因为并非所有服务用户都具有相同的权限。
  • 需要输入用户名和密码。这永远不会被批准,因为公司尽可能使用证书。密码用于登录 Windows,此后几乎所有内容都在 Kerberos 的帮助下使用 Windows 身份验证

最佳解决方案是将当前访问(并通过 Kerberos 提供 Windows 身份验证数据)的人员的凭据直接传递给 WebClient 对象。这可能吗?如果是这样,怎么会?如果有人能告诉我,或者至少让我摆脱痛苦并告诉我这是不可能的,我将非常感激。

4

1 回答 1

1

模拟被证明是最佳解决方案。谢谢你,JT。

有很多很好的资源可以将 Windows 身份验证与模拟联系起来。一个我实际上并没有使用,但后来发现并且看起来非常全面的,可以在这里找到:

http://www.codeproject.com/Articles/94612/Windows-Authentication

在我的情况下也需要委托,这个人解释得很好,并链接到一个有用的 msdn 文档:

http://blog.reveille.org.uk/2010/01/asp-net-impersonation-delegation-2/

于 2013-01-17T02:00:49.053 回答