3

我们有一个具有以下站点结构的 IIS 7.5:

WebApp (ASP.NET Forms) = 网站 (http://WebApp)
   WebAPI (MVC 4 Web API) = 文件夹转换为应用程序 (http://WebApp/webapi)

两者都在同一个 ApplicationPool 下运行。

两者都具有相同的身份验证设置:
- ASP.NET 模拟(经过身份验证的用户)
- Windows 身份验证(提供者:协商)

两个 web.configs 都定义:

<authentication mode="Windows" />  
<identity impersonate="true" /> 

WebApp 使用 HttpClient 从 WebAPI 调用 WebService:

HttpClient _httpClient = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = true });
_httpClient.BaseAddress = new Uri("http://WebApp/webapi/");
_httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage _response = _httpClient.GetAsync("api/Entity/Get").Result;

WebAPI 使用 MS 企业库连接到数据库。

当我在本地运行时一切正常,当我在 IIS 7.5 服务器上部署它并开始远程调试时,我在 Web API 中的 HttpContext 当前用户是应用程序池标识,而不是登录到 Web 应用程序的用户。我当然希望它是登录到 WebApp 的用户,因为我想使用基于 AD 帐户(组)的安全性。

请任何人都可以提供一些建议以使其正常工作。提前致谢。

4

1 回答 1

1

以下答案帮助了我们(https://stackoverflow.com/a/10311823/68024):

有两种可能的方法。如果您有权访问您的服务器 aspnet_config.config,则应设置以下设置(在 web.config 中设置这些设置似乎没有效果):

<legacyImpersonationPolicy enabled="false"/>
<alwaysFlowImpersonationPolicy enabled="true"/>
于 2013-01-08T09:04:04.623 回答