Odstraňování problémů při ověřování formuláře

ID článku: 910439 - Produkty, které se vztahují k tomuto článku.
ASP .NET podpory Voice sloupce

Odstraňování potíží ověřování formulářů

Přizpůsobit tento sloupec vašim potřebám chceme pozvat odeslat nápadů o tématech, které vás zajímají, a problémy, které chcete zobrazit adresovány v budoucnu články databáze Knowledge Base a podpora Voice sloupců. Můžete odeslat nápady a názor pomocí formuláře Ask For It. Také je odkaz na formulář v dolní části sloupce.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Vítá vás sloupec ASP.NET podpory Voice! Mé jméno je Jerry Orman. I byly s aplikací Microsoft za 5 roky a většina Moje zaměřený na související webové technologie, například Microsoft FrontPage a nové technologie Microsoft SharePoint času stráveného. Jsem stráveného poslední rok práci s Microsoft ASP.NET jako pracovníka podpory. Tento měsíc podporu hlas sloupec, přechod do vysvětlují odstraňování problémů při ověřování formuláře v Microsoft ASP.NET.

Odstraňování potíží ověřování formulářů

Při použití ověřování formulářů v aplikaci ASP.NET je pravděpodobně nezbytné řešení problému, který nastane, když uživatel náhodně přesměrována na přihlašovací stránku. Ideální světě by k tomuto problému dojít způsobem by umožňují snadno připojit ladicí program a zachytit problém. V provozních prostředích však toto je zřídka případ. Řešení problému náhodné podobně jako tento jeden, potřebujete protokolovat informace související problém, takže zúžit kořenové příčiny.

V tomto sloupci jsme budete krátce titulní koncept ověřování formulářů. Vyhledejte jsme budete do scénáře, které vést uživatele přesměrování na přihlašovací stránku a jak sbírat data vztahující se k izolování problému. Také jsme budete titulní jak implementovat rozhraní IHttpModule zaznamenávat informace o ověřování formulářů.

Přehled ověřování formulářů

Pokud uživatel ověřuje pomocí ověřování formulářů na web, server vytvoří soubor cookie. Hodnota souboru cookie je ověřovací lístek šifrované formulářů. Soubor cookie je předána na server na každý požadavek aplikace a třídy FormsAuthenticationModule dešifruje hodnotu souboru cookie a určuje, zda je uživatel platný.

Ve výchozím nastavení FormsAuthenticationModule přidáno třídy v souboru. Třída FormsAuthenticationModule spravuje proces FormsAuthentication.

Položka ze souboru je následující:
<httpModule>
     …other modules…
     <add name="FormsAuthentication"
         type="System.Web.Security.FormsAuthenticationModule" />
     …other modules…
</httpModule>
Obecné přenosy HTTP pro ověřování pomocí formulářů ověřování podobá následující:
  1. Klient odešle GET default.aspx. Není odeslán žádný soubor cookie ověřování formulářů.
  2. Server odešle odpověď 302 (přesměrování) Login.aspx.
  3. Klient odešle HTTP POST Login.aspx. Obsahuje přihlašovací informace.
  4. Server odešle odpověď 302 (přesměrování) default.aspx. Ověřovací soubor cookie formulářů je zahrnut.
  5. Klient odešle GET default.aspx. To zahrnuje soubor cookie ověřování formulářů.
Další informace o implementaci a použití ověřování formulářů na webech MSDN:
http://msdn2.microsoft.com/en-us/library/7t6b43z4.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).aspx
Další informace o sdílení souborů cookie ověřování formulářů na webu ASP.NET:
http://quickstarts.asp.net/QuickStartv20/aspnet/doc/security/formsauth.aspx

Uživatel může být přesměrována na přihlašovací stránku důvodů

Ověřovací soubor cookie formulářů je ztraceno

Situace 1

V tomto scénáři přihlášení uživatele k webu. V některých okamžicích klient odešle požadavek na server a třídy FormsAuthenticationModule příjem souboru cookie. Můžete určit, pokud uživatel požadavek neobsahuje soubor cookie povolením cookie protokolování v Internetová informační služba (IIS). Použijte uvedený postup:
  1. Otevřete IIS konzola Microsoft Management Console (MMC).
  2. Klepněte pravým tlačítkem myši na webový server a potom klepněte na příkaz Vlastnosti.
  3. Klepněte na kartě web a potom klepněte na tlačítko Povolit protokolování.
  4. Zkontrolujte, zda je formát protokolu Protokolu W3C Extended.
  5. Klepněte na tlačítko Vlastnosti.
  6. Klepněte na kartu Upřesnit a potom klepněte na tlačítko Rozšířené vlastnosti.
  7. V části Rozšířené vlastnosti, klepnutím zaškrtněte políčko Cookie(cs(Cookie)) a odkazující server (cs(Referer)) políčko.
Po k tomuto problému dojde, zjistěte, který klient měla potíže a adresa IP tohoto klienta. Filtr IIS přihlásit adresa IP tohoto klienta a zobrazení <soubor cookie > sloupce.

Poznámka: Analyzátor protokolu můžete použít k analýze protokolování IIS. Chcete-li stáhnout analyzátor protokolu, naleznete na následujícím webu:
http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07
Jakmile seznam požadavky z určitého uživatele, hledání požadavky na přihlašovací stránku. Znáte byly přesměrovány do této stránky a chcete zobrazit požadavky před došlo k přesměrování. Pokud se něco podobný následujícímu klienta buď neodeslal soubor cookie nebo soubor cookie byla odebrána v síti mezi klientem a serverem.

Toto je počáteční přihlášení.
Zmenšit tuto tabulkuRozšířit tuto tabulku
MetodaStránkaOdpověďSoubory cookie
ZÍSKAT/Default.aspx302 (Přesměrování)Žádné Cookies
ZÍSKAT/Login.aspx200 (Úspěch)Žádné Cookies
PŘÍSPĚVEK/Login.aspx302 (Přesměrování)Žádné Cookies
ZÍSKAT/Default.aspx200 (Úspěch).ASPXAUTH
ZÍSKAT/SomePage.aspx302 (Přesměrování)Žádné cookie .ASPXAUTH
Tyto jsou jiné požadavky následovaný požadavek na stránku na webu bez souboru cookie .ASPXAUTH.
Zmenšit tuto tabulkuRozšířit tuto tabulku
MetodaStránkaOdpověďSoubory cookie
ZÍSKAT/SomePage.aspx302 (Přesměrování)Žádné cookie .ASPXAUTH
ZÍSKAT/Login.aspx200 (Úspěch)Žádné cookie .ASPXAUTH
PŘÍSPĚVEK/Login.aspx302 (Přesměrování)Žádné cookie .ASPXAUTH
ZÍSKAT/SomePage.aspx200 (Úspěch).ASPXAUTH

Poznámka: První požadavek od uživatele není pravděpodobně mít formulářů ověřovací soubor cookie, pokud vytváření trvalých souborů cookie. IISLog bude pouze zobrazit soubory cookie, které byly přijaty v požadavku. První požadavek na ověřovací soubor cookie formulářů bude na požadavek po pokusu o přihlášení úspěšný.
Scénář 2

Ověřovací soubor cookie formulářů může být také ztraceny při překročení limitu souboru cookie klienta. V aplikaci Microsoft Internet Explorer je limit 20 souborů cookie. Po vytvoření 20th cookie klienta předchozí soubory cookie jsou odebrány z kolekce klienta. Odebrány cookie .ASPXAUTH uživatele na přihlašovací stránku přesměrována, při další požadavek zpracovat.

Odstraňování problémů tyto dva scénáře stejným způsobem. Podívejte se na požadavek těsně před přesměrování na přihlašovací stránku. Pokud požadavek na tuto stránku generuje soubory cookie, to bude něco prozkoumat.

Další informace naleznete následujícím článku znalostní databáze Microsoft Knowledge Base:
306070Omezení počtu a velikosti souborů cookie v aplikaci Internet Explorer (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)

Fiddler použijete k zobrazení záhlaví HTTP odeslané klientovi. Po zachycení přenosů poklepejte na žádost a klepněte na příkaz záhlaví zobrazeno záhlaví cookie nastavit. Trasování úspěšné přihlášení uvidíte záhlaví cookie nastavit v odpovědi úspěšné přihlášení.

Fiddler stáhnout, navštivte následující web Fiddler:
http://www.fiddlertool.com/fiddler/
Scénář 3

Po ponechá požadavek klienta, jsou různé vrstvy ovlivňující pakety, které jsou odesílány. Chcete-li zjistit, pokud síťové zařízení odebírá soubor cookie, máte zachytit trasování na klienta a serveru v síti a potom vyhledejte v těle požadavek pro soubor cookie. Chcete prohlédnout požadavek klienta zkontrolujte, zda byl odeslán soubor cookie a zkontrolujte trasování serveru, zda server obdržel souboru cookie.

Požadavek klienta

Toto je požadavek GET po ověření uživatele. Informace o lístek ověřování formulářů zvýrazněny modře. To potvrzuje informace cookie vlevo klienta. When you use a network capture tool, like Netmon, you see the traffic that actually went through the 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
Server-side request

Prohlédněte požadavek dosaženo serveru chcete zkontrolujte, zda server obdržel stejné informace odeslané klientem. Server nepřijal stejné informace, je třeba prozkoumat jiných zařízení v síti určit, kde byl odebrán soubor cookie.

Poznámka: Také byly instancí filtry ISAPI odebrání souborů cookie. Pokud potvrzení přijatých soubor cookie serveru, ale soubor cookie nejsou uvedeny v protokolech IIS zkontrolujte filtry ISAPI. Můžete mít odebrat filtry naleznete, pokud je problém vyřešen.

Časový limit lístku ověřování formulářů

Další běžnou příčinou pro uživatele přesměrována je, pokud vypršela platnost lístku ověřování formulářů. Ověřovací lístek formulářů lze časový limit dvěma způsoby. První scénář dochází, pokud použijete absolutní vypršení platnosti. Ověřovací lístek s absolutní platnosti vyprší po vypršení času vypršení platnosti. Nastavit vypršení platnosti 20 minut a uživatel navštíví web na 2: 00 HODIN. Uživatel bude přesměrována na přihlašovací stránku, pokud uživatel navštíví web po 2: 20 odp.

Pokud použít klouzavou platnosti scénář je poněkud složitější. Soubor cookie a výsledné lístku jsou aktualizovány, pokud uživatel navštíví web po dobu platnosti je polovina vypršela. Například pomocí klouzavou platnosti nastavit vypršení platnosti 20 minut. Uživatel navštíví web na 2: 00 HODIN a uživatel obdrží cookie nastavit vypršení platnosti na 2: 20 odp. Vypršení platnosti je aktualizován pouze, pokud uživatel navštíví web po 2: 10 odp. Pokud uživatel navštíví web na 2: 09 HODIN, lístek není aktualizována, protože polovinu času vypršení platnosti není prošel. Pokud uživatel pak čeká 12 minut návštěvě webu na 2: 21 HODIN, lístku vypršela. Je uživatel přesměrován na přihlašovací stránku.

Způsob přístup tento typ problému je do protokolu informace cookie a lístek ověřování formulářů. Tímto způsobem můžete zobrazit, pokud byl soubor cookie přijatých IIS a hodnoty jsou. To lze provést zápis HttpModule a zapojením modulu do potrubí požadavek. Nebudete mít změnit kód aplikace získat potřebné informace.

Připojené ukázkové funguje v rozhraní Microsoft .NET Framework 1.1 a .NET Framework 2.0 a má komentáře v celé. Ukázka obsahuje následující soubory:
  • FormsAuthEvents.cs: Třída, která implementuje IHttpModule a přiřazuje do Application_BeginRequest událostí.
  • FormsAuthInfo.cs: Třída, která načítá soubor cookie a dešifruje ověřovací lístek formulářů. Kontroluje také souboru web.config aplikace zajistit formulářů, které ověřování povoleno.
  • FormsAuthConfig.cs: Třída, které čte informace ze souboru FormsAuthLogger.config.
  • Log.cs: Soubor, který přijme stringbuilder a zapíše hodnoty soubor protokolu.
  • FormsAuthLogger.config: XML soubor, který je číst pomocí souboru Log.cs. Tento soubor má být složka /bin s DLL sestaveno. Soubor umožňuje konfigurovat následující:
    • Filtrování podle IP: je-li filtrovat sběru dat podle IP klienta. Tímto způsobem můžete protokolovat pouze požadavky z klienta, který je známý problém reprodukovat. To snižuje velikost protokolu.
    • Typ sběr: Určuje kam chcete soubor uložit. Výchozí nastavení je složka dočasných souborů ASP.NET, ale jako účtu pracovního procesu má schopnost zapisovat do složky to můžete uložit kamkoli.
Poznámka: Budete poskytnu odkaz ke stažení pro kód zadaný v souboru FormsAuthLogger.zip.

Jsem budete ukázat hlavní oblasti:
  1. Vytvoření třídy implementuje rozhraní IHttpModule.
    public class FormsAuthEvents : IHttpModule 
    {
    		…code…
    }
  2. Drátová nahoru událost, kterou chcete prohlédnout. V tomto příkladu jsme používáte Application_BeginRequest událostí. Tímto způsobem jsme můžete prozkoumat každého požadavku a určit, pokud má soubor cookie ověřování formulářů a přihlásit FormsAuthenticationTicket, pokud je soubor cookie tam.
    public void Init(HttpApplication application) 
    {
    	//Wire up the BeginRequest event
    	application.BeginRequest += (new EventHandler(this.Application_BeginRequest));
    }
  3. Implementovat událost Application_BeginRequest. soukromé
    private void Application_BeginRequest(Object source, EventArgs e)
    {	
       …code to log the ticket…
    }
    
  4. Načíst soubor cookie ověřování formulářů a potom dešifrovat.
  5. Protokolu hodnoty. Jsem by doporučujeme protokolování následující do formuláře informace. To vám pomůže řádek nahoru formulářů ověřovací informace do protokolů IIS potřeby:
    • Datum: Umožňuje při byl dodán žádosti.
    • RequestType: Zobrazí, zda je požadavek získání nebo zaúčtování.
    • URL: Zobrazí vzorek požadavky úvodní problém.
    • Odkazující server
    • ClientIP: Spojuje v požadavcích na konkrétní klienta.
Další informace o ověřování formulářů můžete stáhnout následující soubory ukázkové FormsAuthLogger:
Zmenšit tento obrázekZvětšit tento obrázek
Download
Download the FormsAuthLogger.exe package now.

Jako vždy pocit volného odeslat nápady na témata, které chcete v budoucnu adresovány sloupce nebo pomocí formuláře Ask For It znalostí.

Vlastnosti

ID článku: 910439 - Poslední aktualizace: 31. května 2007 - Revize: 1.5
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 2.0
Klíčová slova: 
kbmt kbtshoot kbiis kbcode kbasp KB910439 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:910439

Dejte nám zpětnou vazbu