Windows認証を使用する自己ホスト型Web APIアプリケーション(サーバーアプリケーション)があります。web.apiでのWindows認証
のWindows認証は、[承認]タグを使用し、その後System.Net.HttpListener
System.Net.HttpListener listener = (System.Net.HttpListener)appBuilder.Properties["System.Net.HttpListener"];
listener.AuthenticationSchemes = System.Net.AuthenticationSchemes.IntegratedWindowsAuthentication
| System.Net.AuthenticationSchemes.Anonymous;
とコントローラ上で次のAuthenticationSchemesを設定することにより、Startup.cs/Configuration
で有効になっています。次に、すべてのコントローラメソッドについてHttpRequestContext
からPrincipal.Identity
を抽出して、誰が呼び出しているかを確認できます。
これは、発信者とサーバーが同じホスト上にある場合にのみ有効です。呼び出し元のアプリケーションが別のホスト上にあるとすぐに、すべての要求がブロックされ、401が無許可になり、コントローラメソッドがサーバーにヒットしません。これは、呼び出し元のアプリケーションがサーバーと同じユーザーアカウントで実行されている場合でも同じです。それで、特別な設定が必要なので、web.apiのWindows認証は異なるマシン間で動作しますか?
よろしくCORSを使用するための呼び出しを追加し、あなたのWebAPIのスタートアップのクラスで
編集:私はフィドラーで、いくつかのトレースを実行しようとしました、とフィドラーが有効になっている場合、要求は動作するようです(私が行われている3つの要求を参照してください) – meisterd
ですそれらのマシンとサーバーの間にFiddler以外のプロキシがありますか? NTLM/Kerberosでは、プロキシ経由での認証が許可されないためです。 – Jimi