フォーム認証ユーティリティ

更新 : 2007 年 11 月

フォーム認証を管理するには、FormsAuthentication クラスの静的メソッドを使用します。メソッドを次の表に示します。

メソッド

説明

Authenticate

資格情報が提供されている場合に、構成済みの資格情報ストアの資格情報を検証します。

Decrypt

暗号化された認証チケットが HTTP Cookie から既に取得されている場合に、FormsAuthenticationTicket クラスのインスタンスを返します。

Encrypt

FormsAuthenticationTicket が使用されている場合に、HTTP Cookie での使用に適した、暗号化された認証チケットを含んだ文字列を生成します。

GetAuthCookie

暗号化された認証 Cookie を HttpCookie インスタンスとして取得します。Cookie は Cookies コレクションに追加されません。

GetRedirectUrl

ログオン ページへのリダイレクトが発生する要求に対してリダイレクト URL を返します。

HashPasswordForStoringInConfigFile

パスワードとハッシュの種類を識別する文字列が指定されたときは、構成ファイルへの格納に適したハッシュ パスワードを生成します。

Initialize

構成ファイルを読み取り、現在のアプリケーション用の Cookie 値と暗号値を取得することによって FormsAuthentication クラスを初期化します。

RedirectFromLoginPage

最初に要求されている URL に認証されたユーザーをリダイレクトします。

RenewTicketIfOld

FormsAuthenticationTicket のスライド式の有効期限を更新します。

SetAuthCookie

認証チケットを作成し、これをアウトゴーイングの応答の Cookie コレクションに添付します。

SignOut

認証 Cookie または URL テキストに空の値を設定することによって、認証チケットを削除します。これによって、永続性のある Cookie とセッション Cookie の両方が削除されます。

874sbx60.alert_caution(ja-jp,VS.90).gif重要 :
SignOut メソッドは認証されたブラウザ セッションからチケットをクリアしますが、アプリケーションは認証チケットを "侵害" した不適切なソースから再生攻撃を受ける可能性があります。フォーム認証における再生攻撃の予防については、「SignOut」を参照してください。

フォーム認証チケットの管理に役に立つプロパティを次の表に示します。

プロパティ

説明

FormsCookieName

現在のアプリケーションの Cookie 名を取得します。

FormsCookiePath

現在のアプリケーションの Cookie パスを取得します。

CookiesSupported

アプリケーションが Cookie なしのフォーム認証をサポートするように構成されているかどうかを示す値を取得します。

CookieMode

アプリケーションが Cookie なしのフォーム認証に対して構成されているかどうかを示す値を取得します。

CookieDomain

フォーム認証 Cookie のドメインの値を取得します。

DefaultUrl

リダイレクト URL が指定されていない場合にフォーム認証がリダイレクトする URL を取得します。

LoginUrl

フォーム認証によってリダイレクトされるログオン ページの URL を取得します。

RequireSSL

SSL (Secure Sockets Layer) を使用して Cookie を転送する必要があるかどうかを示す値を取得します。

SlidingExpiration

変化する有効期限が有効かどうかを示す値を取得します。

EnableCrossAppRedirects

フォーム認証チケットが 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 クラスの暗号化メソッドを使用して認証チケットを暗号化する必要があります。

参照

参照

FormsAuthentication

FormsAuthenticationTicket

HttpCookie

その他の技術情報

ASP.NET Web アプリケーションのセキュリティ

フォーム認証プロバイダ