Windows 認証が有効になっている Web サーバー上で実行される ASP.NET Web API サービスがあります。
HttpClient を使用してサービスからデータをプルする同じ Web サーバー上の別のサイトで実行される MVC4 上に構築されたクライアント サイトがあります。このクライアント サイトは、ID の偽装を有効にして実行され、Windows 認証も使用されます。
Web サーバーは、IIS 7.5 を搭載した Windows Server 2008 R2 です。
私が抱えている課題は、認証プロセスの一環として HttpClient に現在の Windows ユーザーを渡すことです。この方法で HttpClient を構成しました。
var clientHandler = new HttpClientHandler();
clientHandler.UseDefaultCredentials = true;
clientHandler.PreAuthenticate = true;
clientHandler.ClientCertificateOptions = ClientCertificateOption.Automatic;
var httpClient = new HttpClient(clientHandler);
私の理解では、ID の偽装を有効にしてサイトを実行し、この方法でクライアントを構築すると、現在ログインしているユーザーの偽装された ID を使用してクライアントがサービスに対して認証されるはずです。
これは起こっていません。実際、クライアントはまったく認証していないようです。
サービスは Windows 認証を使用するように構成されており、これは完全に機能しているようです。Web ブラウザーでhttp://server/api/shippersにアクセスすると、Windows 認証を求めるプロンプトが表示されます。入力すると、要求されたデータを受け取ります。
IIS ログで、API 要求が認証なしで受信され、401 チャレンジ応答を受信していることがわかります。
これに関するドキュメントはまばらなようです。
何が間違っているのか、またはこのアプリケーションで Windows 認証を使用する別の方法についての洞察が必要です。
ありがとう、クレイグ