フォーム認証ユーティリティ
更新 : 2007 年 11 月
フォーム認証を管理するには、FormsAuthentication クラスの静的メソッドを使用します。メソッドを次の表に示します。
メソッド |
説明 |
---|---|
資格情報が提供されている場合に、構成済みの資格情報ストアの資格情報を検証します。 |
|
暗号化された認証チケットが HTTP Cookie から既に取得されている場合に、FormsAuthenticationTicket クラスのインスタンスを返します。 |
|
FormsAuthenticationTicket が使用されている場合に、HTTP Cookie での使用に適した、暗号化された認証チケットを含んだ文字列を生成します。 |
|
暗号化された認証 Cookie を HttpCookie インスタンスとして取得します。Cookie は Cookies コレクションに追加されません。 |
|
ログオン ページへのリダイレクトが発生する要求に対してリダイレクト URL を返します。 |
|
パスワードとハッシュの種類を識別する文字列が指定されたときは、構成ファイルへの格納に適したハッシュ パスワードを生成します。 |
|
構成ファイルを読み取り、現在のアプリケーション用の Cookie 値と暗号値を取得することによって FormsAuthentication クラスを初期化します。 |
|
最初に要求されている URL に認証されたユーザーをリダイレクトします。 |
|
FormsAuthenticationTicket のスライド式の有効期限を更新します。 |
|
認証チケットを作成し、これをアウトゴーイングの応答の Cookie コレクションに添付します。 |
|
認証 Cookie または URL テキストに空の値を設定することによって、認証チケットを削除します。これによって、永続性のある Cookie とセッション Cookie の両方が削除されます。 |
フォーム認証チケットの管理に役に立つプロパティを次の表に示します。
プロパティ |
説明 |
---|---|
現在のアプリケーションの Cookie 名を取得します。 |
|
現在のアプリケーションの Cookie パスを取得します。 |
|
アプリケーションが Cookie なしのフォーム認証をサポートするように構成されているかどうかを示す値を取得します。 |
|
アプリケーションが Cookie なしのフォーム認証に対して構成されているかどうかを示す値を取得します。 |
|
フォーム認証 Cookie のドメインの値を取得します。 |
|
リダイレクト URL が指定されていない場合にフォーム認証がリダイレクトする URL を取得します。 |
|
フォーム認証によってリダイレクトされるログオン ページの URL を取得します。 |
|
SSL (Secure Sockets Layer) を使用して Cookie を転送する必要があるかどうかを示す値を取得します。 |
|
変化する有効期限が有効かどうかを示す値を取得します。 |
|
フォーム認証チケットが Cookie に格納されていない場合に、認証されたユーザーを他の Web アプリケーション内の URL にリダイレクトできるかどうかを示す値を取得します。 |
FormsAuthentication クラスのメソッドを使用すると、フォーム認証の動作をカスタマイズできます。ログオン ページのハンドラでこれらのメソッドを使用して、リダイレクトのコードを明示的に記述しないようにすることもできます。ユーザーを認証して要求されたページにリダイレクトする ASP.NET Web ページのコード例を次に示します。
<html>
<head>
<script language="VB" runat=server>
Sub SubmitBtn_Click(Source As Object, e As EventArgs)
' Try to authenticate credentials supplied by user.
If FormsAuthentication.Authenticate _
(UserName.Value, UserPassword.Value) Then
Dim ticket As New FormsAuthenticationTicket _
(UserName.Value, False, 5000)
FormsAuthentication.RedirectFromLoginPage _
(UserName.Value, Persist.Checked)
End If
End Sub
</script>
</head>
<body>
<form method=post runat=server>
<table>
<tr>
<td>Name:</td>
<td><input type="text" id="UserName" runat=server/>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" id="UserPassword" runat=server/>
</td>
</tr>
</table>
<input type="checkbox" id="Persist" runat=server/>
<!-- Use persistent cookie -->
<br>
<input type="submit" OnServerClick="SubmitBtn_Click" runat=server/>
</form>
</body>
</html>
<html>
<head>
<script language="C#" runat=server>
void SubmitBtn_Click(Object Source, EventArgs e)
{
// Try to authenticate credentials supplied by user.
if (FormsAuthentication.Authenticate(UserName.Value,
UserPassword.Value))
{
FormsAuthenticationTicket ticket = new
FormsAuthenticationTicket(UserName.Value, false, 5000);
FormsAuthentication.RedirectFromLoginPage(UserName.Value,
Persist.Checked);
}
}
</script>
</head>
<body>
<form method=post runat=server>
<table>
<tr>
<td>Name:</td>
<td><input type="text" id="UserName" runat=server/></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" id="UserPassword" runat=server/>
</td>
</tr>
</table>
<input type="checkbox" id="Persist" runat=server/>
<!-- Use persistent cookie. -->
<br>
<input type="submit" OnServerClick="SubmitBtn_Click" runat=server/>
</form>
</body>
</html>
HTTP Cookie プロパティに対する細かい制御を必要とするアプリケーションは、チケットを作成し、カスタム コードでリダイレクトを実行します。その場合は、FormsAuthentication クラスの暗号化メソッドを使用して認証チケットを暗号化する必要があります。