FormsAuthentication.SignOut メソッド

定義

ブラウザーからフォーム認証チケットを削除します。

public:
 static void SignOut();
public static void SignOut ();
static member SignOut : unit -> unit
Public Shared Sub SignOut ()

次のコード例では、 メソッドを使用してフォーム認証 Cookie を SignOut クリアし、 メソッドを使用してユーザーをログイン ページに RedirectToLoginPage リダイレクトします。

<%@ 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>
<%@ 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>

注釈

メソッドは SignOut 、フォーム認証チケット情報を Cookie から削除するか、 が の場合 CookiesSupportedfalseURL を削除します。 メソッドを SignOut メソッドと組み合わせて使用すると、1 人の RedirectToLoginPage ユーザーをログアウトさせ、別のユーザーにログインさせることができます。

Cookie レス モードでのみ実行する場合、または認証済みユーザーと匿名ユーザーの両方をサポートする場合は、匿名識別子を削除した結果として実行する特別なビジネス ロジックが必要な場合は、ログイン ページへのリダイレクトを明示的に制御する必要があります。

メソッドがSignOut呼び出されると、 パラメーターを に設定して メソッドendResponseを呼び出Redirectすことによって、アプリケーションのログイン ページへのfalseリダイレクトが行われます。 リダイレクトは、現在のページの実行が完了するまで実行されないため、追加のコードを実行できます。 コードに別のページへの明示的なリダイレクトが含まれていない場合、ユーザーはアプリケーションの構成ファイルで構成されたログイン ページにリダイレクトされます。

メソッドを SignOut 呼び出すと、フォーム認証 Cookie のみが削除されます。 Web サーバーには、後で比較するために有効な認証チケットと有効期限切れの認証チケットが格納されません。 これにより、悪意のあるユーザーが有効なフォーム認証 Cookie を取得した場合、サイトは再生攻撃に対して脆弱になります。 フォーム認証 Cookie を使用する場合のセキュリティを強化するには、次の操作を行う必要があります。

  • プロパティを に設定して、フォーム認証 Cookie の絶対有効期限をSlidingExpirationfalse使用します。 これにより、ハイジャックされた Cookie を再生できるウィンドウが制限されます。

  • プロパティtrueを に設定RequireSSLし、SSL で Web サイト全体を実行することで、Secure Sockets Layer (SSL) 経由で認証 Cookie のみを発行して受け入れます。 プロパティを RequireSSLtrue 設定すると、ASP.NET が SSL 以外の接続を介してブラウザーに認証 Cookie を送信することはなくなりますが、クライアントは Cookie のセキュリティで保護された設定を受け入れない可能性があります。 つまり、クライアントは SSL 以外の接続を介してフォーム認証 Cookie を送信し、ハイジャックに対して脆弱なままにする可能性があります。 SSL で Web サイト全体を実行することで、クライアントがクリアでフォーム認証 Cookie を送信できないようにすることができます。

  • サーバー上の永続ストレージを使用して、ユーザーが Web サイトからログアウトしたときに記録し、イベントなどの PostAuthenticateRequest アプリケーション イベントを使用して、現在のユーザーがフォーム認証で認証されたかどうかを判断します。 ユーザーがフォーム認証で認証され、永続ストレージ内の情報にユーザーがログアウトされていることが示されている場合は、すぐに認証 Cookie をクリアし、ブラウザーをログイン ページにリダイレクトします。 ログインに成功したら、ユーザーがログインしていることを反映するようにストレージを更新します。 この方法を使用する場合、アプリケーションはユーザーのログイン状態を追跡し、アイドル状態のユーザーに強制的にログアウトさせる必要があります。

適用対象

こちらもご覧ください