メイン コンテンツへスキップ
サポート
Microsoft アカウントでサインイン
サインインまたはアカウントを作成してください。
こんにちは、
別のアカウントを選択してください。
複数のアカウントがあります
サインインに使用するアカウントを選択してください。

ASP.NET サポート音声列

はじめに

Microsoft ASP.NET サポート音声列へようこそ。 私は、ASP.NET 開発者サポート チームと共に Nilay B. Shah です。 私は1年半以上 ASP.NET サポートを受けています。 フォーム認証は本当にクールな認証機能です。 この記事では、フォーム認証チケットとフォーム認証 Cookie とその関連設定の関係など、ユーザーがフォーム認証と混同している問題について説明します。 ASP.NET サポートチームのテクニカルリーダーであるJryormanに感謝します。

People、フォーム認証の "チケット" と "Cookie" は密接に関連しているため、疑問に思うことがあります。 私はこのような質問に出くわしました:誰かがクッキーの有効期限とチケットの有効期限の違いを説明できますか? Cookie の有効期限が切れると、ユーザーはログオン ページにリダイレクトされます。 チケットの有効期限が切れるとどうなりますか? また、クッキーの有効期限は切れますか? SlidingUpdate は実際に何を更新しますか?

この記事では、フォーム認証のこれら 2 つの側面に焦点を当てて、次の質問に答えます。

  • フォーム認証チケットとフォーム認証 Cookie とは 彼らはどのように関連していますか?

  • フォーム認証でのチケットの役割は何ですか?

  • Cookie の有効期限とチケットの有効期限はどのように関連していますか?

  • フォーム認証チケットとフォーム認証 Cookie のコンテキストでのスライディング有効期限のしくみ

  • フォーム認証 Cookie とフォーム認証チケットのタイムアウト プロパティはどこで設定できますか?

  • 問題のシナリオ: フォーム認証は、構成ファイルで設定されているタイムアウト属性値の前にタイムアウトする可能性があります

フォーム認証チケットとフォーム認証 Cookie とは 彼らはどのように関連していますか?

フォーム認証 Cookie は、フォーム認証チケットのコンテナーに過ぎない。 チケットは、各要求でフォーム認証 Cookie の値として渡され、認証されたユーザーを識別するために、サーバー上のフォーム認証によって使用されます。

ただし、Cookie レス フォーム認証を使用する場合、チケットは暗号化された形式で URL で渡されます。 クライアント ブラウザーが Cookie をブロックする場合があるため、Cookie レス フォーム認証が使用されます。 この機能は、Microsoft .NET Framework 2.0 で導入されています。

詳細については、次の Microsoft Developer Network (MSDN) Web サイトを参照してください。

http://msdn2.microsoft.com/en-us/library/system.web.configuration.formsauthenticationconfiguration.cookieless.aspx

フォーム認証でのチケットの役割は何ですか?

フォーム認証チケットは、ASP.NET アプリケーションにユーザーを通知するために使用されます。 したがって、チケットはフォーム認証のセキュリティの構成要素です。

チケットは、サーバーの Machine.config ファイルの <machineKey> 構成要素を使用して暗号化され、署名されます。 ASP.NET 2.0 では、decryptionKey と、<machineKey> 要素の新しい復号化属性を使用して認証チケットを暗号化します。 復号化属性を使用すると、使用する暗号化アルゴリズムを指定できます。 ASP.NET 1.1 および 1.0 では、構成できない 3DES 暗号化が使用されます。 チケット値の改ざんは、サーバー上のチケットの暗号化を解除できなかった場合に決定されます。 その結果、ユーザーはログオン ページにリダイレクトされます。


アプリケーションが Web ファームにデプロイされている場合は、チケットのハッシュと復号化にそれぞれ使用される <machineKey> タグ内の validationKey 属性と decryptionKey 属性に対して、各サーバーの構成ファイルが同じ値を共有していることを確認する必要があります。 これは、どのサーバーが連続する要求を処理するかを保証できないためです。 FormsAuthenticationTicket 暗号化と Web ファームの展開に関する考慮事項の詳細については、次の MSDN Web サイトを参照してください。

http://msdn2.microsoft.com/en-us/library/ms998288.aspx

フォーム認証チケットは、FormsAuthenticationTicket クラスを使用して手動で生成できます。 詳細については、次の MSDN Web サイトを参照してください。

http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationticket.aspx

Cookie の有効期限とチケットの有効期限はどのように関連していますか?

非永続的 Cookie の場合、チケットの有効期限が切れている場合、Cookie も期限切れになり、ユーザーはログオン ページにリダイレクトされます。 一方、チケットが永続的としてマークされ、Cookie がクライアント ボックスに保存されている場合、ブラウザーは同じ認証 Cookie を使用していつでも Web サイトにログオンできます。 ただし、FormsAuthentication.SignOut メソッドを使用して、永続的または非永続的な Cookie を明示的に削除できます。

FormsAuthentication.SignOut メソッドの詳細については、次の MSDN Web サイトを参照してください。

http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthentication.signout.aspxCookie レス フォーム認証では、ブラウザーが閉じられた場合、チケットは失われ、次の要求で新しいチケットが生成されます。

フォーム認証チケットとフォーム認証 Cookie のコンテキストでのスライディング有効期限のしくみ

スライディングの有効期限はまったく同じ方法で動作します!

たとえば、ログオン ページに 5:00 00:00:00 PM にアクセスする場合、タイムアウト属性が 10 で、slidingExpiration 属性が TRUE に設定されている場合、午後 5:10 00:00:00 に有効期限が切れます。 これで、午後 5:05 00:00:00 に Web ページが再び参照されると、Cookie とチケットのタイムアウト期間が午後 5:15 00:00:00 にリセットされます。

注 有効期限の半分が経過する前に Web ページにアクセスした場合、チケットの有効期限はリセットされません。 たとえば、午後 5:04 00:00:00 に Web ページに再度アクセスした場合、Cookie とチケットのタイムアウト期間はリセットされません。

詳細については、次の MSDN Web サイトを参照してください。

http://msdn2.microsoft.com/en-us/library/1d3t3c61(vs.71).aspx

フォーム認証 Cookie とフォーム認証チケットのタイムアウト値はどこで設定できますか?

行うことができる唯一の設定は、Web.config ファイルまたは Machine.config ファイル内の <フォーム> タグです。 この変更により、チケットが手動で生成されない限り、チケットまたは Cookie のコンテキストでのフォーム認証のタイムアウト期間が決定されます。


<!-- forms 属性:
name="[cookie name]" - フォーム認証に使用される Cookie の名前を設定します。
loginUrl="[url]" - 認証のためにクライアントをリダイレクトする URL を設定します。
protection="[All|なし|暗号化|検証]" - Cookie 内のデータの保護モードを設定します。
timeout="[minutes]" - Cookie が有効になるまでの期間を設定します (各要求でリセットされます)。
path="/" - Cookie のパスを設定します。
requireSSL="[true|false]" - フォーム認証 Cookie は SSL 経由でのみ送信する必要がありますか?
slidingExpiration="[true|false]" - 有効期限が切れそうになった場合、フォーム認証 Cookie とチケットを再発行する必要がありますか?
--> 詳細については、次の MSDN Web サイトを参照してください。

http://msdn2.microsoft.com/en-us/library/1d3t3c61.aspxFormsAuthenticationTicket クラスを使用してチケットが手動で生成される場合、タイムアウトは Expiration 属性を使用して設定できます。 この値は、構成ファイルで指定されたタイムアウト属性値をオーバーライドします。

FormsAuthenticationTicket メンバーの詳細については、次の MSDN Web サイトを参照してください。

http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationticket_members.aspx

問題のシナリオ: フォーム認証は、構成ファイルで設定されているタイムアウト属性値の前にタイムアウトする可能性があります

フォーム認証チケットが手動で生成された場合、チケットのタイムアウト プロパティは、構成ファイルで設定されている値をオーバーライドします。 したがって、その値が構成ファイルの値より小さい場合、フォーム認証チケットは構成ファイルのタイムアウト属性値の前に期限切れになり、その逆も可能です。 たとえば、Web.config ファイルでタイムアウト属性><フォームが 30 に設定され、チケットの有効期限の値が 20 分に設定されているとします。 この場合、フォーム認証チケットは 20 分後に期限切れになり、ユーザーはその後に再度ログオンする必要があります。

関連リンク

910439 フォーム認証のトラブルシューティング
 

301240 C# .NET を使用して ASP.NET アプリケーションでフォーム ベースの認証を実装する方法
 

私はあなたが認証チケットとクッキーを形成する ASP.NET に関連する混乱の一部を緩和するのに役立つこの情報を見つけたことを願っています。 [サポート音声] 列はユーザーに適しています。

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。

この情報は役に立ちましたか?

言語の品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?
[送信] を押すと、Microsoft の製品とサービスの改善にフィードバックが使用されます。 IT 管理者はこのデータを収集できます。 プライバシーに関する声明。

フィードバックをいただき、ありがとうございます。

×