Problembehandlung bei Formularauthentifizierung

ASP .NET Support Voice-Kolumne

Problembehandlung bei Formularauthentifizierung

Diese Spalte an Ihre Bedürfnisse anpassen möchten Laden Sie Ihre Ideen zu Themen, die Sie interessieren und sollen Probleme in Zukunft Knowledge Base-Artikeln und Support Voice Spalten angesprochen. Sie können Ihre Ideen und ihr Feedback Bitten dafür Formular senden. Außerdem wird ein Link zu diesem Formular am Ende dieser Kolumne.
Willkommen Sie bei ASP.NET Support Voice-Kolumne! Mein Name ist Jerry Orman. Ich seit 5 Jahren für Microsoft und haben die meiste Zeit Web-Technologien wie Microsoft FrontPage und Microsoft SharePoint-Technologien konzentriert. Ich habe das letzte Jahr mit Microsoft ASP.NET Kundendiensttechniker. Diesen Monat in Support Voice-Kolumne werde Formularauthentifizierung in Microsoft ASP.NET Problembehandlung erläutert werden.

Problembehandlung bei Formularauthentifizierung

Wenn Sie in einer Anwendung ASP.NET Formularauthentifizierung verwenden, finden Sie es erforderlichen Fehlerbehebung für ein Problem, das auftritt, wenn der Benutzer nach dem Zufallsprinzip auf die Anmeldeseite umgeleitet. In einer idealen Welt würden auftreten, in einer Weise würde einfach einen Debugger anhängen und das Problem erfasst. Produktions-Umgebung sieht jedoch selten der Fall. Um zufällige ähnlichen Problemen, müssen Sie sich Informationen zu dem Problem, damit Sie die Ursache eingrenzen können.

In diesem Artikel werden wir das Formularauthentifizierung Konzept kurz. Dann wir werden die Szenarien für einen Benutzer auf der Anmeldeseite umgeleitet führen und Datenerfassung für Isolierung des Problems. Wir behandeln auch wie eine IHttpModule-Schnittstelle, um die Formularauthentifizierung Informationen implementiert.

Authentifizierung (Übersicht)

Wenn ein Benutzer zu einer Website mit Formularauthentifizierung authentifiziert, erstellt der Server einen Cookie. Der Wert des Cookies ist ein verschlüsseltes Authentifizierungsticket. Das Cookie wird bei jeder Anforderung an die Anwendung an den Server übergeben und FormsAuthenticationModule -Klasse den Cookiewert entschlüsselt und bestimmt, ob der Benutzer gültig ist.

Standardmäßig wird in der Datei Machine.config FormsAuthenticationModule -Klasse hinzugefügt. FormsAuthenticationModule -Klasse verwaltet den FormsAuthentication.

Im folgenden finden einen Eintrag aus der Datei Machine.config:
<httpModule>     …other modules…
<add name="FormsAuthentication"
type="System.Web.Security.FormsAuthenticationModule" />
…other modules…
</httpModule>

Allgemeine HTTP-Verkehr für die Authentifizierung mit Formularauthentifizierung ähnelt der folgenden:
  1. Der Client sendet eine HTTP GET an Default.aspx. Keine Formularauthentifizierungscookie wird gesendet.
  2. Der Server sendet eine Antwort 302 (Redirect) an Login.aspx.
  3. Der Client sendet eine HTTP-POST an Login.aspx. Sie enthält die Anmeldeinformationen.
  4. Der Server sendet eine Antwort 302 (Redirect) auf Default.aspx. Das Formularauthentifizierungscookie ist enthalten.
  5. Der Client sendet eine HTTP GET an Default.aspx. Dazu gehören das Formularauthentifizierungscookie.
Weitere Informationen zur Implementierung und Formularauthentifizierung finden Sie auf der folgenden MSDN-Websites:Weitere Informationen zum Freigeben von Formularauthentifizierungscookies finden Sie auf der folgenden Website von ASP.NET:

Gründe, aus denen ein Benutzer auf die Anmeldeseite umgeleitet werden können

Das Formularauthentifizierungscookie geht verloren

Szenario 1

In diesem Szenario ein Benutzer auf der Website angemeldet. Irgendwann sendet der Client eine Anforderung an den Server und die
FormsAuthenticationModule -Klasse erhält keine Cookies. Sie können ermitteln, wenn ein Cookie keinen Cookie protokollieren in Microsoft-Internetinformationsdienste (IIS) aktivieren. Gehen Sie hierzu folgendermaßen vor:
  1. Öffnen Sie IIS Microsoft Management Console (MMC).
  2. Auf der Website, und klicken Sie dann auf
    Eigenschaften.
  3. Klicken Sie auf die Registerkarte Website , und klicken Sie auf Protokollierung aktivieren.
  4. Stellen Sie sicher, dass das Format W3C-erweitert als Dateiformat.
  5. Klicken Sie auf Eigenschaften.
  6. Klicken Sie auf die Registerkarte Erweitert , und klicken Sie dann auf
    Erweiterte Eigenschaften.
  7. Unter Erweiterte Eigenschaften, aktivieren Sie das Kontrollkästchen Cookie(cs(Cookie)) und der Referenz (cs(Referer)) das Kontrollkästchen.
Wenn dieses Problem auftritt, bestimmen Sie Client mussten das Problem und die IP-Adresse des Clients. IIS-Protokoll auf den Client IP-Adresse filtern und Anzeigen der <Cookies> Spalte.

Hinweis Log Parser können Sie die IIS-Protokolle analysieren. Log Parser Herunterladen finden Sie auf der folgenden Microsoft-Website:Nachdem Sie die Liste der Anfragen von diesem bestimmten Benutzer haben, suchen Sie nach Anfragen zur Anmeldeseite. Sie wissen sie wurden auf diese Seite umgeleitet, und sollen die Anfragen vor die Umleitung. Wenn Sie etwas ähnlich dem folgenden des Clients entweder nicht Cookies oder Cookies im Netzwerk zwischen dem Client und dem Server entfernt wurde.

Dies ist die erste Anmeldung.
-MethodeSeiteAntwortCookies
Erhalten/Default.aspx302 (Redirect)Keine Cookies
Erhalten/Login.aspx200 (Erfolg)Keine Cookies
Bereitstellen/Login.aspx302 (Redirect)Keine Cookies
Erhalten/Default.aspx200 (Erfolg).ASPXAUTH
Erhalten/SomePage.aspx302 (Redirect)Nein. ASPXAUTH Cookies
Sind andere Anforderungen, gefolgt von einer Anforderung an eine Seite ohne die. ASPXAUTH-Cookie.
-MethodeSeiteAntwortCookies
Erhalten/SomePage.aspx302 (Redirect)Nein. ASPXAUTH Cookies
Erhalten/Login.aspx200 (Erfolg)Nein. ASPXAUTH Cookies
Bereitstellen/Login.aspx302 (Redirect)Nein. ASPXAUTH Cookies
Erhalten/SomePage.aspx200 (Erfolg).ASPXAUTH

Hinweis Die erste Anforderung von diesem Benutzer wahrscheinlich kein Formularauthentifizierungscookie haben, wenn Sie ein persistentes Cookie erstellt. Das IIS-Protokoll wird nur Cookies angezeigt, die in der Anforderung empfangen wurden. Die erste Anforderung an das Formularauthentifizierungscookie haben werden die Anforderung nach einer erfolgreichen Anmeldung.
Szenario 2

Das Formularauthentifizierungscookie kann auch verloren, wenn der Client Cookies überschritten. In Microsoft Internet Explorer ist maximal 20 Cookies. Nach dem 20. Cookie auf dem Client erstellt wird, werden frühere Cookies aus dem Client entfernt. Wenn die. ASPXAUTH Cookies entfernt, der Benutzer zur Anmeldeseite umgeleitet, wenn die nächste Anforderung verarbeitet wird.

Sie können diese beiden Szenarien auf die gleiche Weise beheben. Sehen Sie sich die Anforderung vor der Umleitung auf die Anmeldeseite. Wenn die Anforderung dieser Seite Cookies generiert, werden diese etwas zu untersuchen.

Klicken Sie für weitere Informationen auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:

306070 Anzahl und Größe Grenzen eines Cookies in Internet Explorer


Fiddler können Sie die HTTP-Header anzeigen, die an den Client gesendet werden. Nach der Aufzeichnung des Datenverkehrs Doppelklicken Sie auf eine Anforderung und dann auf Header finden Sie unter Set-Cookie-Header. Wenn eine erfolgreiche Anmeldung verfolgen, sehen Sie den Set-Cookie-Header auf eine erfolgreiche Anmeldung.

Besuchen Sie zum Herunterladen Fiddler Fiddler-Website:
Szenario 3

Nachdem die Anforderung den Client verlässt, können verschiedene Ebenen, die die Pakete auswirken, die gesendet werden. Um festzustellen, ob ein Netzwerkgerät Cookies entfernen, müssen Sie Network verfolgen auf dem Client und dem Server, und suchen Sie im Hauptteil der Anforderung für das Cookie. Sehen Sie sich die Clientanforderung sicherstellen, dass das Cookie gesendet wurde, und überprüfen Sie Trace Server sicherstellen, dass der Server das Cookie empfangen möchten.

Anforderung

Dies ist eine GET-Anforderung, nachdem der Benutzer authentifiziert wurde. Die Informationen zum Formularauthentifizierungsticket Formulare wird blau hervorgehoben. Dies bestätigt, dass die Cookieinformationen Client verlassen. Verwendung einer Netzwerk-Erfassungstool wie Netmon, sehen Sie den Datenverkehr, der über den Adapter tatsächlich ging.
47 45 54 20 68 74 74 70-3a 2f 2f 6c 6f 63 61 6c   GET http://local68 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

Serverseitige Anforderung

Betrachten der Anforderung, die den Server erreicht, wenn Sie sicherstellen, dass der Server die gleiche Informationen erhalten, die vom Client gesendeten. Wenn der Server nicht dieselbe Informationen erhalten haben, müssen Sie zu anderen Geräten im Netzwerk, in dem das Cookie entfernt wurde.

Hinweis Es gab auch Instanzen der ISAPI-Filter entfernen von Cookies. Wenn Sie bestätigen, dass der Webserver das Cookie empfangen das Cookie in die IIS-Protokolle nicht aufgeführt ist, überprüfen Sie die ISAPI-Filter. Möglicherweise entfernen Sie die Filter, um festzustellen, ob das Problem behoben ist.

Timeout des Formularauthentifizierungsticket

Die häufigste Ursache für einen Benutzer umgeleitet ist das Formularauthentifizierungsticket abgelaufen ist. Das Formularauthentifizierungsticket kann auf zwei Arten. Das erste Szenario tritt auf, wenn Sie absoluten Ablaufzeit. Absolute Ablaufdatum erlischt Authentifizierungsticket die Zeit abläuft. Z. B. eine Ablaufzeit von 20 Minuten festlegen und ein Benutzer besucht die Website um 14:00 Uhr. Der Benutzer wird zur Anmeldeseite umgeleitet werden, wenn der Benutzer die Website nach 14:20 Uhr besucht.

Wenn Sie die gleitende Ablaufzeit verwenden, ist das Szenario komplizierter. Cookies und das resultierende Ticket werden aktualisiert, wenn der Benutzer die Website besucht, nachdem die Ablaufzeit Hälfte abgelaufen ist. Legen Sie z. B. eine Ablaufzeit von 20 Minuten mit gleitende Ablaufzeit. Ein Benutzer besucht die Website um 14:00 Uhr und dem Benutzer wird ein Cookie auf 20 Uhr abläuft. Die Ablaufzeit wird nur aktualisiert, wenn der Benutzer die Website nach 14:10 Uhr besucht. Wenn der Benutzer die Website um 14:09 Uhr besucht, wird das Ticket nicht aktualisiert, da die Hälfte der Ablaufzeit hat nicht bestanden. Wenn der Benutzer dann 12 Minuten wartet und die Website um 14:21 Uhr, wird das Ticket abgelaufen. Der Benutzer wird zur Anmeldeseite umgeleitet.

Eine Möglichkeit, Ansatz ist dieser Art von Problem Forms Authentication Cookie und Ticket Informationen protokollieren. Auf diese Weise sehen Sie, wenn das Cookie empfangen wurde von IIS und die Werte. Sie können hierzu ein HttpModuleschreiben, und schließen Sie das Modul in der Anforderungspipeline. Sie werden keinen Anwendungscode zu benötigten Informationen zu ändern.

Angefügte Beispiel funktioniert in Microsoft.NET Framework 1.1 und.NET Framework 2.0 und Kommentare in. Das Beispiel umfasst die folgenden Dateien:Hinweis ich gebe einen Downloadlink für den Code in der Datei FormsAuthLogger.zip angegeben.

Ich werde die Hauptbereiche hinweisen:

Wie immer gerne Ideen zu Themen soll in Zukunft Spalten oder in der Knowledge Base mit der
Bitten Sie für Form.
Eigenschaften

Artikelnummer: 910439 – Letzte Überarbeitung: 16.01.2017 – Revision: 1

Feedback