3

次のサイト構造を持つ 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にログオンしているユーザーにしたいです。

誰でも、これを機能させるためのアドバイスを提供してください。前もって感謝します。

4

1 に答える 1

1

次の回答が役に立ちました ( https://stackoverflow.com/a/10311823/68024 ):

これには 2 つの方法があります。サーバー aspnet_config.config にアクセスできる場合は、次の設定を行う必要があります (web.config で設定しても効果がないようです)。

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