FormsAuthentication.SignOut メソッド

定義

ブラウザーからフォーム認証チケットを削除します。Removes the forms-authentication ticket from the browser.

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

次のコード例では、SignOut メソッドを使用してフォーム認証 cookie をクリアし、RedirectToLoginPage メソッドを使用してユーザーをログインページにリダイレクトします。The following code example clears the forms-authentication cookie using the SignOut method and redirects the user to the login page using the RedirectToLoginPage method.

<%@ 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 メソッドは、CookiesSupportedfalse場合に、cookie または URL からフォーム認証チケット情報を削除します。The SignOut method removes the forms-authentication ticket information from the cookie or the URL if CookiesSupported is false. SignOut メソッドを RedirectToLoginPage メソッドと組み合わせて使用すると、1人のユーザーをログに記録し、別のユーザーがログインできるようにすることができます。You can use the SignOut method in conjunction with the RedirectToLoginPage method to log one user out and allow a different user to log in.

Cookie なしのモードで排他的に実行する場合、または認証されたユーザーと匿名ユーザーの両方をサポートする場合は、匿名識別子を削除した結果として特別なビジネスロジックを実行する必要がある場合は、ログインページへのリダイレクトを明示的に制御する必要があります。If you run exclusively in cookieless mode, or if you support both authenticated and anonymous users, you should explicitly control the redirect to the login page if you require special business logic to execute as a result of removing the anonymous identifier.

SignOut メソッドを呼び出すと、endResponse パラメーターを falseに設定して Redirect メソッドを呼び出すことによって、アプリケーションのログインページへのリダイレクトが行われます。When the SignOut method is called, a redirect to the application's login page is made by calling the Redirect method with the endResponse parameter set to false. 現在のページの実行が完了するまでリダイレクトは行われないため、追加のコードを実行できます。The redirect does not take place until the current page has finished executing, so additional code can be run. コードに別のページへの明示的なリダイレクトが含まれていない場合、ユーザーはアプリケーションの構成ファイルで構成されたログインページにリダイレクトされます。If the code does not contain an explicit redirect to another page, the user is redirected to the login page configured in the application's configuration file.

SignOut メソッドを呼び出すと、フォーム認証 cookie だけが削除されます。Calling the SignOut method only removes the forms authentication cookie. Web サーバーは、有効期限が切れた認証チケットを後で比較するために保存しません。The Web server does not store valid and expired authentication tickets for later comparison. これにより、悪意のあるユーザーが有効なフォーム認証クッキーを取得した場合に、サイトが再生攻撃に対して脆弱になります。This makes your site vulnerable to a replay attack if a malicious user obtains a valid forms authentication cookie. フォーム認証クッキーを使用するときのセキュリティを強化するには、次の操作を行う必要があります。To improve security when using a forms authentication cookie, you should do the following:

  • SlidingExpiration プロパティを falseに設定して、フォーム認証 cookie の絶対有効期限を使用します。Use absolute expiration for forms authentication cookies by setting the SlidingExpiration property to false. これにより、ハイジャックされた cookie を再生できるウィンドウが制限されます。This limits the window in which a hijacked cookie can be replayed.

  • RequireSSL プロパティを true に設定し、Web サイト全体を SSL で実行することによって、Secure Sockets Layer (SSL) の認証 cookie のみを発行および受け入れます。Only issue and accept authentication cookies over Secure Sockets Layer (SSL), by setting the RequireSSL property to true and by running the entire Web site under SSL. RequireSSL プロパティを true に設定すると、SSL 以外の接続経由で ASP.NET がブラウザーに認証クッキーを送信することがなくなります。ただし、クライアントでは、cookie のセキュリティ設定が優先されない場合があります。Setting the RequireSSL property to true ensures that ASP.NET will never send an authentication cookie to the browser over a non-SSL connection; however, the client might not honor the secure setting on the cookie. つまり、クライアントは、SSL 以外の接続を介してフォーム認証 cookie を送信する可能性があるため、ハイジャックに対して脆弱なままになります。This means the client might send the forms authentication cookie over a non-SSL connection, thus leaving it vulnerable to hijack. SSL で Web サイト全体を実行することで、クライアントがフォーム認証 cookie をクリアテキストで送信しないようにすることができます。You can prevent a client from sending the forms authentication cookie in the clear by running the entire Web site under SSL.

  • サーバー上の永続的なストレージを使用して、ユーザーが Web サイトからログアウトしたことを記録し、PostAuthenticateRequest イベントなどのアプリケーションイベントを使用して、現在のユーザーがフォーム認証で認証されているかどうかを判断します。Use persistent storage on the server to record when a user logs out of the Web site, and then use an application event such as PostAuthenticateRequest event to determine whether the current user was authenticated with forms authentication. ユーザーがフォーム認証を使用して認証されていて、永続的なストレージの情報でユーザーがログアウトしたことが示された場合は、すぐに認証 cookie をクリアし、ブラウザーをログインページにリダイレクトします。If the user was authenticated with forms authentication, and if the information in persistent storage indicates the user is logged out, immediately clear the authentication cookie and redirect the browser back to the login page. ログインが正常に完了したら、ユーザーがログインしたことを反映するようにストレージを更新します。After a successful login, update storage to reflect that the user is logged in. この方法を使用する場合、アプリケーションはユーザーのログイン状態を追跡する必要があり、アイドル状態のユーザーを強制的にログアウトさせる必要があります。When you use this method, your application must track the logged-in status of the user, and must force idle users to log out.

適用対象

こちらもご覧ください