次のサイト構造を持つ IIS 7.5 があります。
WebApp (ASP.NET Forms) = Web サイト (http://WebApp)
WebAPI (MVC 4 Web API) = アプリケーションに変換されたフォルダー (http://WebApp/webapi)
どちらも同じ ApplicationPool で実行されています。
両方の認証設定は同じです。
- ASP.NET 偽装 (認証されたユーザー)
- Windows 認証 (プロバイダー: ネゴシエート)
どちらの web.config も次を定義します。
<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 Enterprise Library を使用して DB に接続します。
この localy を実行すると、すべて正常に動作します。これを IIS 7.5 サーバーに展開してリモート デバッグを開始すると、Web API の HttpContext 現在のユーザーは、Web アプリケーションにログオンしているユーザーではなく、アプリケーション プール ID になります。ADアカウント(グループ)に基づくセキュリティを使用したいので、もちろんWebAppにログオンしているユーザーにしたいです。
誰でも、これを機能させるためのアドバイスを提供してください。前もって感謝します。