認証
Web API は、認証がホストで行われることを前提としています。IIS は認証に HTTP モジュールを使用します。asp.net では、IIS または ASP.NET に組み込まれている認証モジュールを web.config を介して構成したり、独自の HTTP モジュールを記述してカスタム認証を実行したりできるようになりました。
同時に複数の認証を使用できますが、問題はありません。あなたの場合、Windows authentication と Anonymous authentication の両方が必要です。Windows 認証は Web サイトを保護し、匿名認証はWeb APIを開きます。
IIS で認証を構成する
IIS Express で
のホスティング [プロパティ] ペインを開き (プロジェクトのプロパティではなく F4 を使用)、目的の認証を適用します。 [匿名認証] を [無効] に設定します。「Windows 認証」を「有効」に設定します。
IIS 7 以降でのホスティング
IIS マネージャーで、機能ビューの認証機能を開きます。必要な認証を有効/無効にします。認証システムがオプションでない場合 (Windows など)、サーバー マネージャー (役割サービスの追加) を介してインストールする必要があります。
認可
asp.net 認証
ASP.NET では、特定のリソースへのアクセスを承認する方法が 2 つあります。ファイルと URL の承認です。ここでは説明しませんが、この記事を読むことができます。
重要なことは、web.config でユーザーやグループを許可/拒否できることです。
Windows 認証のデフォルト設定では、次のように認証ユーザーのみを許可します *****:
<authorization>
<deny users="?" ></deny>
</authorization>
匿名ユーザーを許可したい場合は? URL の場所「api」の下に、これを追加します。
<location path="api">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
ウェブ API 認可
asp.net Web Api 承認は、パイプラインの後半、コントローラーの近くで行われます。これにより、リソースへのアクセスを許可するときに、より詳細な選択を行うことができます。
Web API には、組み込みの承認フィルターAuthorizeAttributeが用意されています。AllowAnonymousAttributeもあります。コントローラーまたはアクションでグローバルに使用できます。デフォルトでは、すべてのアクションが許可されています。
API のテスト
ブラウザ経由
統合 Windows 認証は、ネゴシエート認証方式をサポートするすべてのブラウザーで機能します。これは、Internet Explorer の cas であり、現在は Chrome です。Windows 認証を使用して Web サイトを閲覧すると、Windows 資格情報が自動的に提供されます。Firefox はこのスキームをサポートしていないため、このブラウザで認証をテストすることがよくあります。
HttpClient 経由 HttpClient
は、Web API (ブラウザーなど) を呼び出すときに資格情報を提供する必要があります。これは、適切な資格情報を使用して HttpClientHandler を構成することによって行われます。
//use default credentials aka Windows Credentials
HttpClientHandler handler = new HttpClientHandler()
{
UseDefaultCredentials = true
};
//use username/password credentials
HttpClient client = new HttpClient(handler);
var handler = new HttpClientHandler {
Credentials = new NetworkCredential(username, password)
};
var httpClient = new HttpClient(handler);
これがあなたを助けることを願っています。
あなたの場合の最後の重要なことは、Web Apiが匿名ユーザーをまったく許可しないことです! HttpClientHandler で既定の資格情報を使用しているため、これはサービスに Windows 認証が必要であることを意味します。オープン & パブリック サービスでは資格情報を構成する必要はありません。