2

我在同一个Web 服务器上有一个 Web API 应用程序和一个 MVC4 客户端应用程序。它们都针对 Windows 身份验证进行了配置。客户端应用程序已启用模拟。

当我在 Visual Studio 中运行客户端时,它成功地将我的 Windows 凭据传递给 Web API。

当我在 Web 服务器上点击客户端时,Web API 收到“NT AUTHORITY\NETWORK SERVICE”,我猜它来自运行客户端应用程序的应用程序池。

客户端传递凭据如下:

HttpClientHandler handler = new HttpClientHandler()
{
    PreAuthenticate = true,
    UseDefaultCredentials = true
};
HttpClient client = new HttpClient(handler);

所以我的问题是……我需要在这里授权吗?

在 Active Directory 中没有为此配置 Web 服务器 - 但我认为由于应用程序位于同一服务器上,因此模拟就足够了。我会打开委托,但我需要一个系统管理员来做到这一点 - 并且有各种各样的箍要跳过 - 所以想确保这就是我需要的。

4

1 回答 1

3

好的,简而言之,不需要授权。

原来是冒名顶替的问题。从我读过的内容来看,这听起来像是应该需要的,因为应用程序位于同一台服务器上,但即使我认为我已经正确配置了它,我还是错过了一个关键部分。我需要更改 aspnet.config 中的两个设置:

<legacyImpersonationPolicy enabled="false"/>
<alwaysFlowImpersonationPolicy enabled="true"/>

更多详细信息: https ://stackoverflow.com/a/10311823/1230905

于 2013-04-25T15:02:52.177 回答