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

文書翻訳 文書翻訳
文書番号: 910439 - 対象製品
ASP .NET サポート音声列

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

この列には、お客様のニーズをカスタマイズするのとを参照してください興味のあるトピックに関するアイデアを今後のサポート技術情報の記事やサポート音声列に招待します。アイデアおよびフィードバックを使用して送信することができます、 要求します。 フォームです。また、この列の下部にあるフォームへのリンクです。
すべて展開する | すべて折りたたむ

目次

ASP.NET サポート音声列にようこそ!私の名前です。Jerry 健。私はマイクロソフトで 5 年間されているし、のほとんどを費やした私時間中心、Microsoft などの Web 関連の技術や、新しい Microsoft SharePoint テクノロジ。操作の最後の年を費やしてきましたMicrosoft ASP.NET のサポート エンジニアとして。今月の声をサポートフォーム認証のトラブルシューティングを行う方法を説明すると思います] 列Microsoft ASP.NET。

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

ときは、ASP.NET アプリケーションでフォーム認証を使用、ユーザーが場合に発生する問題のトラブルシューティングを行う必要があります。ランダムに、ログイン ページにリダイレクトします。理想的な環境でこの方法で、簡単に接続できるようになりますが発生します、デバッガーは、問題をキャプチャします。運用環境では、ただし、これはほとんどです。サポート案件です。この 1 つのようなランダムな問題のトラブルシューティングを行うには、ルート ダウン絞ることができますように問題に関連する情報をログに記録する必要があります。あります。

このコラムでは簡単に説明します、フォーム認証の概念。どちらのシナリオに、紹介します。ユーザーにログイン ページとのデータをキャプチャする方法にリダイレクトされる可能性します。それは、問題の特定に関連です。フォーム認証情報を記録するのには、IHttpModule インターフェイスを実装する方法についても取り上げます。

フォーム認証の概要

フォーム認証を使用して、Web サイトにユーザーを認証すると、サーバーが cookie を作成します。Cookie の値は暗号化されたフォーム認証チケットです。各要求の cookie をサーバーを渡されるcookie 値を復号化、アプリケーション、および、 FormsAuthenticationModuleクラスとユーザーが有効なかどうかを判断します。

既定では、 FormsAuthenticationModuleクラスは、Machine.config ファイルに追加されます。FormsAuthenticationModuleクラス、FormsAuthentication のプロセスを管理します。

Machine.config ファイルからのエントリを次に示します。
<httpModule>
     …other modules…
     <add name="FormsAuthentication"
         type="System.Web.Security.FormsAuthenticationModule" />
     …other modules…
</httpModule>
フォーム認証を使用して認証するため、一般的な HTTP トラフィック、次のようになります。
  1. クライアントは、HTTP GET を Default.aspx に送信します。フォーム認証 cookie は送信されません。
  2. Login.aspx に 302 応答 (リダイレクト) をサーバーに送信します。
  3. クライアントは、Login.aspx に HTTP POST を送信します。ログイン情報が含まれます。
  4. Default.aspx に 302 応答 (リダイレクト) をサーバーに送信します。フォーム認証の cookie が含まれています。
  5. クライアントは、HTTP GET を Default.aspx に送信します。これには、フォーム認証の cookie が含まれます。
実装と使用に関する詳細についてはフォーム認証では、次の MSDN Web サイトを参照してください。
http://msdn2.microsoft.com/en-us/library/7t6b43z4.aspx
.aspx の http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthentication (vs.71)
.aspx の http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationticket (vs.71)
フォーム認証 cookie の共有の詳細については、次の ASP.NET Web サイトを参照してください。
http://quickstarts.asp.net/QuickStartv20/aspnet/doc/security/formsauth.aspx

理由は、ユーザーをログイン ページにリダイレクトする可能性がありますように

フォーム認証の cookie が失われます

シナリオ 1

このシナリオでは、ユーザーが Web サイトにログオンします。ある時点で、クライアントは要求をサーバーに送信し、FormsAuthenticationModuleクラスは、クッキーを受信しません。することができます。ユーザーの要求、cookie クッキーを有効にするとはないかどうかを決定します。Microsoft インターネット インフォメーション サービス (IIS) のログを記録します。これを行うには、次の手順を実行します。
  1. IIS の Microsoft 管理コンソール (MMC) を開きます。
  2. Web サイトを右クリックしをクリックしてくださいプロパティ.
  3. クリックして、 Web サイト タブとクリック 有効にします。ログの記録.
  4. ログの形式であることを確認してください。 W3C 拡張ログ ファイル書式.
  5. クリックしてください。 プロパティ.
  6. クリックして、 高度な タブとクリック拡張プロパティ.
  7. 拡張プロパティ、を選択するのには、をクリックして、 Cookie(cs(Cookie)) チェック ボックスと、 参照元(cs(Referer)) チェック ボックスします。
この問題が発生すると、どのクライアントが決定します。問題とそのクライアントの IP アドレス。そのクライアントの IP アドレスが IIS ログにフィルターを適用、クリックし、[ cookieを表示 > の列。

メモ IIS のログを解析するのには、ログ パーサーを使用できます。Log Parser をダウンロードするのには、次のマイクロソフト Web サイトを参照してください。
http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07
一覧から、特定の要求をした後ユーザー ログイン ページへの要求を検索します。ユーザーのリダイレクトされた知っています。これにページを要求する前に参照してくださいするのリダイレクトが発生しました。次のクライアントと同様の何かを参照してください場合いずれかのクッキーやクッキーが削除された、クライアント間のネットワーク上を送信しませんでした。サーバーです。

これは、最初のログインです。
元に戻す全体を表示する
メソッドページ応答クッキー
取得します。/Default.aspx302 (リダイレクト)いいえクッキー
取得します。/Login.aspx200 (成功)いいえクッキー
投稿/Login.aspx302 (リダイレクト)いいえクッキー
取得します。/Default.aspx200(成功).ASPXAUTH
取得します。/SomePage.aspx302 (リダイレクト)いいえ.ASPXAUTH クッキー
これらの要求をページにサイトの後に、他の要求です。なし。ASPXAUTH のクッキー。
元に戻す全体を表示する
メソッドページ応答クッキー
取得します。/SomePage.aspx302 (リダイレクト)いいえ.ASPXAUTH クッキー
取得します。/Login.aspx200 (成功)いいえ.ASPXAUTH クッキー
投稿/Login.aspx302 (リダイレクト)いいえ.ASPXAUTH クッキー
取得します。/SomePage.aspx200(成功).ASPXAUTH

メモ 最初の要求、ユーザーからはフォームを与える可能性がないです。認証 cookie は永続的な cookie を作成する場合を除いて。IIS のログは、クッキー表示は、要求を受信しました。フォーム認証の cookie には、最初の要求の上で要求が成功した後になりますログインしようとします。
シナリオ 2

クライアントの cookie の制限を超過すると、フォーム認証 cookie も失われます。Microsoft ではInternet Explorer は、20 までの cookie の制限があります。20 のクッキーをした後クライアントで作成された、既存の cookie は、クライアントから削除されます。コレクションです。場合は、します。ASPXAUTH のクッキーが削除され、次の要求が処理されるときに、ユーザーをログイン ページにリダイレクトされます。

これら 2 つのシナリオと同じように対処できます。要求ではファイルの場所します。ログイン ページへのリダイレクトの前に。このページへの要求が発生した場合クッキーは何かを調査するになります。

詳細については、以下の記事番号をクリックして、マイクロソフト サポート技術情報資料を参照してください。
306070Internet Explorer の cookie の数とサイズの制限

Fiddler を使用することができます、HTTP ヘッダーを表示するのにはクライアントに送信されます。トラフィックをキャプチャした後、[要求] をダブルクリック、プロパティ ヘッダー セットの Cookie ヘッダーを参照してくださいするのには。場合は、トレースはログインに成功、Set-cookie ヘッダーの応答に表示されます、ログインに成功します。

Fiddler をダウンロードするのには、次の Fiddler の Web サイトを参照してください。
http://www.fiddlertool.com/fiddler/
シナリオ 3

クライアント要求を出た後は、様々 な層があります。送信中のパケットに影響します。ネットワーク デバイスがあるかを確認するのにはcookie を削除する、クライアントとサーバーでネットワーク トレースをキャプチャする必要がある、クッキーを要求の本文を確認します。たいです。クッキーが送信されているかどうかを確認するのには、クライアントの要求を参照し、サーバーを確認サーバーが cookie を受信したことを確認するのにはトレースします。

クライアントの要求

これは、ユーザーが認証された後、GET 要求です。をフォーム認証チケット情報が青で強調表示されます。これを確認します。cookie の情報は、クライアントのまま。ネットワーク キャプチャを使用すると、ツール、ネットワーク モニターのように、実際に至るまでのトラフィックを参照、adapter.
47 45 54 20 68 74 74 70-3a 2f 2f 6c 6f 63 61 6c   GET http://local
68 6f 73 74 2f 46 6f 72-6d 73 41 75 74 68 4c 6f   host/FormsAuthLo
67 54 65 73 74 2f 57 65-62 46 6f 72 6d 31 2e 61   gTest/WebForm1.a
73 70 78 20 48 54 54 50-2f 31 2e 31 0d 0a 41 63   spx HTTP/1.1..Ac
63 65 70 74 3a 20 69 6d-61 67 65 2f 67 69 66 2c   cept: image/gif,
…Other headers of the GET request…
63 68 65 0d 0a 43 6f 6f-6b 69 65 3a 20 2e 41 53   che..Cookie: .AS
50 58 41 55 54 48 3d 33-43 45 46 39 42 39 41 30   PXAUTH=3CEF9B9A0
43 33 37 41 44 46 36 33-45 36 42 44 33 37 42 36   C37ADF63E6BD37B6
39 43 44 41 32 35 30 30-30 46 38 30 37 32 38 46   9CDA25000F80728F
35 31 43 39 35 36 36 44-31 34 43 35 34 31 34 35   51C9566D14C54145
38 31 43 39 33 45 32 41-30 31 44 44 43 44 45 46   81C93E2A01DDCDEF
32 34 41 31 37 34 32 39-34 31 30 43 30 39 37 34   24A17429410C0974
42 33 45 43 42 30 36 34-32 32 38 45 33 35 33 39   B3ECB064228E3539
39 41 38 32 32 42 33 42-39 33 36 44 46 30 38 46   9A822B3B936DF08F
42 41 42 44 33 45 31 30-32 44 30 30 32 31 30 43   BABD3E102D00210C
32 45 31 33 39 38 30 37-39 42 32 33 35 32 39 46   2E1398079B23529F
34 46 35 44 37 34 41 3b-20 50 72 6f 66 69 6c 65   4F5D74A; Profile
3d 56 69 73 69 74 6f 72-49 64 3d 62 32 34 65 62   =VisitorId=b24eb
サーバー側の要求

要求では、サーバーに到達を見ると、か確認、サーバーが同じ情報を受信することは、クライアントが送信します。サーバーが同じ情報を受信しなかった場合は、その他のデバイスを調査する必要があります、cookie が削除されたを決定するネットワークです。

メモ Cookie を削除する ISAPI フィルターのインスタンスもありました。Web サーバーが cookie を受信したが、cookie の一覧が表示されていないことを確認した場合IIS のログに、ISAPI フィルターを確認してください。場合を参照してくださいするのには、フィルターを削除する必要があります、問題が解決されます。

フォーム認証チケットをタイムアウトします。

リダイレクトするのには、ユーザーの他の原因がある場合は、フォーム認証チケットの有効期限が切れました。フォーム認証チケット タイムアウトの 2 つの方法がありますすることができます。使用している場合、最初のシナリオが発生します。絶対有効期限します。絶対有効期限で、認証チケットの期限が切れるとき、有効期限有効期限が切れます。たとえば、20 分間のユーザーとの有効期限を設定します。2時 00分 PM にサイトを訪問します。場合は、ユーザーをログイン ページにリダイレクトされます。ユーザーは、午後 2 時 20 分後、サイトを訪問します。

スライド式有効期限を使用する場合は、シナリオよりやや複雑です。Cookie があり、結果として得られるチケット有効期限が半分-期限切れの後、ユーザーがサイトと更新。たとえば、スライド式有効期限を使用して 20 分間の有効期限を設定します。ユーザーが 2時 00分 PM にサイトを訪問したし、ユーザーが 2時 20分 PM に有効期限が設定されている cookie を受け取ります。場合は、ユーザーが 2時 10分 PM より後にサイトは有効期限は更新されません。ユーザーが 2時 09分 PM にサイトを訪問する場合は、チケットために更新されませんの半分有効期限時間が経過していません。2時 21分 PM にサイトを訪問 12 分後、ユーザーを待機する場合は、チケットは有効期限が切れます。ユーザーがログインにリダイレクトされます。ページです。

この種の問題に対処する方法の 1 つのフォームをログに記録です。認証 cookie とチケットの情報です。これによりと、を参照することができます、IIS と、値がどのようなものかによって cookie を受け取りました。書き込むことによってこれを行うことができます。HttpModuleは、し、そのモジュールが要求パイプラインに接続します。情報を取得するのには、アプリケーションのコードを変更することはできません、必要があります。

Microsoft.NET Framework 1.1 および.NET Framework 2.0 で動作するおり、付属のサンプルコメントを。サンプルには、次のファイルが含まれます。
  • FormsAuthEvents.cs: IHttpModuleを実装し、 Application_BeginRequestイベントに結びついている、クラスです。
  • FormsAuthInfo.cs: クッキーを取得するクラスとフォーム認証チケットの暗号化を解除します。また、アプリケーションを検出します。Web.config ファイルの認証フォームを確実に有効になります。
  • FormsAuthConfig.cs: 情報を読み取りクラス、FormsAuthLogger.config ファイルです。
  • Log.cs: stringbuilder を受け取って、値を書き込む、ファイルログ ファイルにします。
  • FormsAuthLogger.config: 読み取られる XML ファイルで、Log.cs ファイル。これファイルは、/bin フォルダー内のビルドの DLL する必要があります。このファイルを使用できます。次の設定をします。
    • IP フィルター: データのキャプチャを選択すると、クライアントの ip アドレス。このように、要求だけに、既知のクライアントからログオンできます。この問題を再現します。これは、ログのサイズが減少します。
    • キャプチャの種類: このファイルを保存する場所を指定します。既定値は、ASP.NET の一時ファイル フォルダー、ですが、これを保存することができます。どこかワーカー プロセス アカウントに書き込むことがあるできます限り、フォルダーです。
メモ コードの提供のダウンロード リンクを提供します、FormsAuthLogger.zip ファイルです。

メインの部分をここで指摘しておきます。
  1. IHttpModuleインターフェイスを実装するクラスを作成します。
    public class FormsAuthEvents : IHttpModule 
    {
    		…code…
    }
  2. 表示するイベントを配線します。このサンプルでは、我々 は、 Application_BeginRequestイベントを使用します。こうすると各要求を調査して場合を決定します。cookie がある場合は、フォーム認証の cookie および所属するログがあります。
    public void Init(HttpApplication application) 
    {
    	//Wire up the BeginRequest event
    	application.BeginRequest += (new EventHandler(this.Application_BeginRequest));
    }
  3. Application_BeginRequestイベントを実装します。
    private void Application_BeginRequest(Object source, EventArgs e)
    {	
       …code to log the ticket…
    }
    
  4. フォーム認証の cookie を取得し、復号化です。
  5. 値を記録します。次のログインをお勧めしますフォームの情報を追加します。これはことができます、フォーム上の線必要な場合は、IIS ログの認証情報。
    • 日: リクエストしたときを参照してくださいすることができます。します。
    • 修飾子: が Get 要求であるかを示していますポスト。
    • URL: のパターンを示しています。要求の問題に 。
    • 参照元
    • ClientIP: このオプションでは、特定の依頼クライアントです。

常にアイデアを送信する自由します。今後のコラムでまたはを使用して、サポート技術情報に対応します。 要求します。 フォームです。

プロパティ

文書番号: 910439 - 最終更新日: 2013年5月30日 - リビジョン: 4.0
この資料は以下の製品について記述したものです。
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 2.0
キーワード:?
kbtshoot kbiis kbcode kbasp kbmt KB910439 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:910439
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com