Mike Wasson による
フォーム認証では、HTML フォームを使用してユーザーの資格情報をサーバーに送信します。 インターネット標準ではありません。 フォーム認証は、ユーザーが HTML フォームを操作できるように、Web アプリケーションから呼び出される Web API にのみ適しています。
| 利点 | 欠点 |
|---|---|
|
|
簡単に言うと、ASP.NET のフォーム認証は次のように機能します。
- クライアントは、認証を必要とするリソースを要求します。
- ユーザーが認証されていない場合、サーバーは HTTP 302 (Found) を返し、ログイン ページにリダイレクトします。
- ユーザーが資格情報を入力し、フォームを送信します。
- サーバーは、元の URI にリダイレクトする別の HTTP 302 を返します。 この応答には、認証 Cookie が含まれます。
- クライアントはリソースを再度要求します。 要求には認証 Cookie が含まれているため、サーバーは要求を許可します。
詳細については、「フォーム認証の概要」を参照してください。
Web API でのフォーム認証の使用
フォーム認証を使用するアプリケーションを作成するには、MVC 4 プロジェクト ウィザードで "インターネット アプリケーション" テンプレートを選択します。 このテンプレートは、アカウント管理用の MVC コントローラーを作成します。 ASP.NET Fall 2012 Update で使用できる "シングル ページ アプリケーション" テンプレートを使用することもできます。
Web API コントローラーでは、「[Authorize] 属性の使用」の説明に従って、[Authorize]属性を使用してアクセスを制限できます。
フォーム認証では、セッション Cookie を使用して要求を認証します。 ブラウザーは、関連するすべての Cookie を対象の Web サイトに自動的に送信します。 この機能により、フォーム認証はクロスサイト リクエスト フォージェリ (CSRF) 攻撃に対して脆弱になる可能性があります。クロス サイト リクエスト フォージェリ (CSRF) 攻撃の防止を参照してください。
フォーム認証では、ユーザーの資格情報は暗号化されません。 そのため、SSL で使用しない限り、フォーム認証はセキュリティで保護されません。 Web API での SSL の操作を参照してください。