次の方法で共有


ASP.NET Web API でのフォーム認証

Mike Wasson による

フォーム認証では、HTML フォームを使用してユーザーの資格情報をサーバーに送信します。 インターネット標準ではありません。 フォーム認証は、ユーザーが HTML フォームを操作できるように、Web アプリケーションから呼び出される Web API にのみ適しています。

利点 欠点
  • 実装が簡単:ASP.NET に組み込まれています。
  • ASP.NET メンバーシップ プロバイダーを使用します。これにより、ユーザー アカウントを簡単に管理できます。
  • 標準の HTTP 認証メカニズムではありません。は標準の Authorization ヘッダーの代わりに HTTP Cookie を使用します。一部のユーザーは Cookie を無効にします。
  • 非ブラウザー クライアントからの使用が困難です。 ログインするにはブラウザーが必要です。
  • ユーザー資格情報は、要求でプレーンテキストとして送信されます。
  • クロスサイトリクエストフォージェリ (CSRF) に対して脆弱のため、CSRF対策が求められます。

簡単に言うと、ASP.NET のフォーム認証は次のように機能します。

  1. クライアントは、認証を必要とするリソースを要求します。
  2. ユーザーが認証されていない場合、サーバーは HTTP 302 (Found) を返し、ログイン ページにリダイレクトします。
  3. ユーザーが資格情報を入力し、フォームを送信します。
  4. サーバーは、元の URI にリダイレクトする別の HTTP 302 を返します。 この応答には、認証 Cookie が含まれます。
  5. クライアントはリソースを再度要求します。 要求には認証 Cookie が含まれているため、サーバーは要求を許可します。

A S P ドット ネットでのフォーム認証のしくみの図

詳細については、「フォーム認証の概要」を参照してください。

Web API でのフォーム認証の使用

フォーム認証を使用するアプリケーションを作成するには、MVC 4 プロジェクト ウィザードで "インターネット アプリケーション" テンプレートを選択します。 このテンプレートは、アカウント管理用の MVC コントローラーを作成します。 ASP.NET Fall 2012 Update で使用できる "シングル ページ アプリケーション" テンプレートを使用することもできます。

Web API コントローラーでは、「[Authorize] 属性の使用」の説明に従って、[Authorize]属性を使用してアクセスを制限できます。

フォーム認証では、セッション Cookie を使用して要求を認証します。 ブラウザーは、関連するすべての Cookie を対象の Web サイトに自動的に送信します。 この機能により、フォーム認証はクロスサイト リクエスト フォージェリ (CSRF) 攻撃に対して脆弱になる可能性があります。クロス サイト リクエスト フォージェリ (CSRF) 攻撃の防止を参照してください。

フォーム認証では、ユーザーの資格情報は暗号化されません。 そのため、SSL で使用しない限り、フォーム認証はセキュリティで保護されません。 Web API での SSL の操作を参照してください。