ASP.NET Web API でのフォーム認証
作成者: Mike Wasson
フォーム認証では、HTML フォームを使用してユーザーの資格情報をサーバーに送信します。 これはインターネット標準ではありません。 フォーム認証は、ユーザーが HTML フォームを操作できるように、Web アプリから呼び出される Web API にのみ適していいます。
長所 | 短所 |
---|---|
|
|
簡単に言うと、ASP.NET でのフォーム認証は次のように機能します。
- 認証を必要とするリソースが、クライアントから要求されます。
- ユーザーが認証されていない場合、サーバーから HTTP 302 (Found) が返され、ログイン ページにリダイレクトされます。
- ユーザーは資格情報を入力し、そのフォームを送信します。
- サーバーから別の HTTP 302 が返され、それにより元の URI にリダイレクトされます。 この応答には、認証 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 の操作」を参照してください。