委派是否需要在SAME服务器上的应用程序之间传递凭据?

时间:2013-04-24 09:59:25

标签: asp.net-mvc-4 asp.net-web-api

我在相同 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服务器 - 但我认为由于应用程序位于同一服务器上,因此模拟就足够了。我会转让委托,但我需要一个系统管理员才能做到这一点 - 并且有各种各样的环节可以跳过 - 所以想要确保这就是我需要的。

1 个答案:

答案 0 :(得分:3)

好的,简而言之,不需要 - 代表团。

原来是冒充问题。从我读到的内容听起来就像应用程序在同一台服务器上应该需要的那样,但即使我认为我已经正确配置它,我也错过了一个关键部分。我需要在aspnet.config中更改两个设置:

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

此处有更多详情: https://stackoverflow.com/a/10311823/1230905