在我的 ASP.NET 应用程序中,我使用 WebClient 下载文件。该文件几乎总是在公司内部网上,并且需要访问权限。每当我在 VS 中运行应用程序时,它都能正常工作,因为它是在我自己权限的上下文中运行的。但是,当它部署到 IIS 时,它在“网络服务”权限的上下文中运行,而对于 Intranet,这些权限基本上不存在(如您所料)。
我可以在这里看到一些糟糕的解决方案:
- 专门为应用程序创建一个帐户,其详细信息将位于 web.config 并作为字符串提供给 WebClient。这是次优的,因为并非所有服务用户都具有相同的权限。
- 需要输入用户名和密码。这永远不会被批准,因为公司尽可能使用证书。密码用于登录 Windows,此后几乎所有内容都在 Kerberos 的帮助下使用 Windows 身份验证
最佳解决方案是将当前访问(并通过 Kerberos 提供 Windows 身份验证数据)的人员的凭据直接传递给 WebClient 对象。这可能吗?如果是这样,怎么会?如果有人能告诉我,或者至少让我摆脱痛苦并告诉我这是不可能的,我将非常感激。