FormsAuthentication.SignOut メソッド
ブラウザからフォーム認証チケットを削除します。
名前空間: System.Web.Security
アセンブリ: System.Web (system.web.dll 内)
構文
'宣言
Public Shared Sub SignOut
'使用
FormsAuthentication.SignOut
public static void SignOut ()
public:
static void SignOut ()
public static void SignOut ()
public static function SignOut ()
適用できません。
解説
SignOut メソッドは、Cookie または、CookiesSupported が false の場合は URL からフォーム認証チケット情報を削除します。SignOut メソッドを RedirectToLoginPage メソッドと組み合わせて使用することで、ユーザーをログアウトさせて、別のユーザーをログインさせることができます。
cookieless モードで排他的に実行しているとき、または認証済みユーザーと匿名ユーザーの両方をサポートしているときに、匿名 ID を削除した結果として特別なビジネス ロジックを実行する必要がある場合は、ログイン ページへのリダイレクトを明示的に制御する必要があります。
SignOut メソッドが呼び出されると、endResponse パラメータが false に設定された Redirect メソッドを呼び出すことにより、アプリケーションのログイン ページへのリダイレクトが行われます。現在のページが実行を終了するまでリダイレクトは起こらないため、追加コードを実行できます。そのコードに、別のページへの明示的なリダイレクトが含まれていなければ、ユーザーは、アプリケーションの構成ファイルに設定されているログイン ページにリダイレクトされます。
SignOut メソッドを呼び出すと、単に、フォーム認証 Cookie が削除されます。Web サーバーは、後で比較するための、有効で期限切れの認証チケットを格納していません。このため、悪意のあるユーザーが有効なフォーム認証 Cookie を取得した場合、サイトは再生攻撃に対して無防備になります。フォーム認証 Cookie を使用する場合にセキュリティを強化するには、次の操作を行う必要があります。
SlidingExpiration プロパティを false に設定して、フォーム認証 Cookie に絶対有効期限を使用します。これにより、Cookie がハイジャックされた場合に、これをリプレイできるウィンドウが制限されます。
RequireSSL プロパティを true に設定したり、Web サイト全体を SSL (Secure Sockets Layer) で運用したりすることで、認証 Cookie を SSL 経由でのみ発行または承認します。RequireSSL プロパティを true に設定すると、ASP.NET は、非 SSL 接続経由でブラウザに認証 Cookie を送信しなくなります。ただし、クライアントは、Cookie に関するセキュリティで保護された設定を受け付けない可能性があります。つまり、クライアントは、フォーム認証 Cookie を非 SSL 接続経由で送信する可能性があるため、この Cookie はハイジャックによる攻撃を受けやすいままです。Web サイト全体を SSL で運用することにより、クライアントがフォーム認証 Cookie を平文で送信できないようにすることができます。
サーバー上の永続ストレージを使用して、ユーザーが Web サイトからログアウトする時刻を記録します。その後、PostAuthenticateRequest イベントなどのアプリケーション イベントを使用して、現在のユーザーがフォーム認証を使用して認証されたかどうかを確認します。ユーザーがフォーム認証を使用して認証された場合、および永続ストレージ内の情報がユーザーがログアウトしていることを示している場合は、すぐに認証 Cookie をクリアし、ブラウザをログイン ページにリダイレクトします。ログインが成功した後、ユーザーがログインしていることを反映するためにストレージを更新します。このメソッドを使用する場合、アプリケーションはユーザーのログイン状態を追跡する必要があります。また、アイドル状態のユーザーをログアウトさせる必要があります。
使用例
SignOut メソッドを使用してフォーム認証 Cookie をクリアし、RedirectToLoginPage メソッドでユーザーをログイン ページにリダイレクトするコード例を次に示します。
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Public Sub LoginLink_OnClick(sender As Object, args As EventArgs)
FormsAuthentication.SignOut()
FormsAuthentication.RedirectToLoginPage()
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
Welcome <b><%=User.Identity.Name%></b>. Not <b><%=User.Identity.Name%></b>?
Click <asp:LinkButton id="LoginLink" Text="here"
OnClick="LoginLink_OnClick" runat="server" />
to sign in.
<!-- Page Contents -->
</form>
</body>
</html>
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
public void LoginLink_OnClick(object sender, EventArgs args)
{
FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
Welcome <b><%=User.Identity.Name%></b>. Not <b><%=User.Identity.Name%></b>?
Click <asp:LinkButton id="LoginLink" Text="here"
OnClick="LoginLink_OnClick" runat="server" />
to sign in.
<!-- Page Contents -->
</form>
</body>
</html>
プラットフォーム
Windows 98,Windows Server 2000 SP4,Windows CE,Windows Millennium Edition,Windows Mobile for Pocket PC,Windows Mobile for Smartphone,Windows Server 2003,Windows XP Media Center Edition,Windows XP Professional x64 Edition,Windows XP SP2,Windows XP Starter Edition
Microsoft .NET Framework 3.0 は Windows Vista,Microsoft Windows XP SP2,および Windows Server 2003 SP1 でサポートされています。
バージョン情報
.NET Framework
サポート対象 : 3.0,2.0,1.1,1.0
参照
関連項目
FormsAuthentication クラス
FormsAuthentication メンバ
System.Web.Security 名前空間