Poradce při potížích s ověřování pomocí formulářů

Překlady článku Překlady článku
ID článku: 910439 - Produkty, které se vztahují k tomuto článku.
ASP .NET podpora hlasové sloupce

Poradce při potížích s ověřování pomocí formulářů

Chcete-li upravit tento sloupec vašim potřebám, chceme pozvat sdělit své nápady o tématech, která zajímají je a problémy, které chcete zobrazit řešit v budoucnosti sloupce podporu hlasu a články znalostní báze Knowledge Base. Můžete odeslat své myšlenky a pomocí zpětné vazby Požádejte o ni formulář. Je zde také odkaz na formulář v dolní části tohoto sloupce.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Vítejte na sloupci podpora hlasové technologie ASP.NET. Mé jméno je Jerry Orman. Byly u společnosti Microsoft po dobu 5 let a utratili většinu mé čas se zaměřuje na souvisejících webových technologií, jako je například aplikace Microsoft FrontPage a nové technologie Microsoft SharePoint. I utratili Loni práce s Microsoft ASP.NET jako pracovník technické podpory. Tento měsíc podporu hlasem sloupec, kliknu týkající se ověřování pomocí formulářů v řešení Technologie Microsoft ASP.NET.

Poradce při potížích s ověřování pomocí formulářů

Při použití ověřování pomocí formulářů v aplikaci technologie ASP.NET bude pravděpodobně nutné odstranit problém, který nastane, když je uživatel náhodně přesměrován na přihlašovací stránku. V ideálním světě to problém by nastat způsobem, který by umožňují snadno připojit ladicí program a zachytit problém. V provozním prostředí jedná se však jen zřídka případ. Náhodné potíží tohoto typu, je třeba zaznamenávat informace spojené s tímto problémem, takže můžete zúžit kořen Příčina.

V tomto sloupci jsme se krátce vztahovat Pojem ověřování formulářů. Podíváme se pak do jaké scénáře vést k uživatel přesměrován na přihlašovací stránku a postup při sběru dat která se vztahuje k izolování problému. Jsme také bude zahrnovat jak implementovat rozhraní IHttpModule zaznamenávat informace o ověřování pomocí formulářů.

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

Při ověřuje uživatele na web s použitím ověřování pomocí formulářů, server vytvoří soubor cookie. Hodnota souboru cookie je šifrovaný formulářů ověřovací lístek. Soubor cookie je předán serveru při každém požadavku na aplikace a třídy FormsAuthenticationModule dešifruje hodnotu souboru cookie a Určuje, zda uživatel je nebo není platný.

Ve výchozím nastavení FormsAuthenticationModule třídy je přidán v souboru Machine.config. Třídy FormsAuthenticationModule spravuje proces ověřování pomocí formulářů.

Položky ze souboru Machine.config je následující:
<httpModule>
     …other modules…
     <add name="FormsAuthentication"
         type="System.Web.Security.FormsAuthenticationModule" />
     …other modules…
</httpModule>
Obecné přenosy HTTP pomocí ověřování založené na formulářích ověřování vypadá podobně jako následující:
  1. Klient odešle HTTP GET Default.aspx. Je 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 Login.aspx POST protokolu HTTP. Obsahuje informace o přihlášení.
  4. Server odešle odpověď 302 (přesměrování) na stránku Default.aspx. Soubor cookie ověřování pomocí formulářů je součástí.
  5. Klient odešle HTTP GET Default.aspx. Jedná se o soubor cookie ověřování pomocí formulářů.
Další informace o implementaci a použití ověřování pomocí formulářů, naleznete na následujících 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ářů naleznete na následujícím webu technologie ASP.NET:
http://quickstarts.ASP.NET/QuickStartv20/aspnet/doc/Security/formsauth.aspx

Z důvodů, že uživatel může přesměrováni na přihlašovací stránku

Soubor cookie ověřování pomocí formulářů je ztraceno

Scénář 1

V tomto scénáři uživatel přihlásí k webu. V určitém okamžiku klient odešle požadavek na server a Třídy FormsAuthenticationModule neobdrží soubor cookie. Je možné Určete, pokud požadavek uživatele neobsahuje soubor cookie povolíte soubory cookie protokolování v Internetová informační služba (IIS). Chcete-li tak učinit, postupujte takto:
  1. Otevřete serveru IIS konzola Microsoft Management Console (MMC).
  2. Klepněte pravým tlačítkem myši webový server a potom klepněte na tlačítkoVlastnosti.
  3. Klepněte Webový server kartu a potom klepněte na tlačítko Povolit Protokolování.
  4. Ujistěte se, že je formát protokolu W3C Extended souboru protokolu Formát.
  5. Klepněte na tlačítko Vlastnosti.
  6. Klepněte Rozšířené kartu a potom klepněte na tlačítkoRozšířené vlastnosti.
  7. Ve skupinovém rámečku Rozšířené vlastnosti, vyberte klepnutím Cookie(cs(cookie)) Zaškrtávací políčko a Odkazující Server: (cs(Referer)) Zaškrtněte toto políčko.
Když nastane tento problém, zjistit, který klient měl problém a adresu IP pro tohoto klienta. Filtrování protokolu služby IIS na adrese IP pro tohoto klienta, a zobrazení souborů cookie> sloupce.

Poznámka: Analyzátor protokolu můžete použít k analýze protokolů služby IIS. Chcete-li stáhnout analyzátor protokolu, navštivte následující Web společnosti Microsoft:
http://www.microsoft.com/downloads/details.aspx?FamilyId=890cd06b-abf8-4c25-91b2-f8d975cf8c07
Po seznamu požadavků že zvláštní Uživatel může vyhledat požadavky na přihlašovací stránku. Víte, že by byly přesměrovány na tuto stránku a chcete zobrazit požadavky před došlo k přesměrování. Pokud se zobrazí něco podobné následujícímu klienta buď neodeslal, že soubor cookie nebo soubor cookie byl odebrán v síti mezi klientem a server.

Toto je první přihlášení.
Zmenšit tuto tabulkuRozšířit tuto tabulku
MetodaStránkyOdpověďSoubory cookie
ZÍSKAT/ Default.aspx302 (Přesměrování)Ne Soubory cookie
ZÍSKAT/Login.aspx200 (Úspěch)Ne Soubory cookie
POST/Login.aspx302 (Přesměrování)Ne Soubory cookie
ZÍSKAT/ Default.aspx200 (Úspěch).ASPXAUTH
ZÍSKAT/SomePage.aspx302 (Přesměrování)Ne .ASPXAUTH Cookie
Jedná se o jiné požadavky, následuje požadavek na stránku na webu bez.ASPXAUTH cookie.
Zmenšit tuto tabulkuRozšířit tuto tabulku
MetodaStránkyOdpověďSoubory cookie
ZÍSKAT/SomePage.aspx302 (Přesměrování)Ne .ASPXAUTH Cookie
ZÍSKAT/Login.aspx200 (Úspěch)Ne .ASPXAUTH Cookie
POST/Login.aspx302 (Přesměrování)Ne .ASPXAUTH Cookie
ZÍSKAT/SomePage.aspx200 (Úspěch).ASPXAUTH

Poznámka: První požadavek od uživatele není pravděpodobné, že jste formuláře soubor cookie ověřování Pokud vytváříte trvalý soubor cookie. Do protokolu služby IIS bude pouze zobrazit soubory cookie, v žádosti byly přijaty. První požadavek na ověřovací soubor cookie formulářů bude na žádost po úspěšné Pokus o přihlášení.
Scénář 2

Soubor cookie ověřování formulářů může být také ztraceny při překročení limitu souboru cookie klienta. V aplikaci Microsoft Aplikace Internet Explorer je omezena na 20 souborů cookie. Po 20 souborů cookie vytvořen v klientském počítači, předchozí soubory cookie jsou odebrány z klienta kolekce. Pokud.ASPXAUTH cookie je odebrán, uživatel přesměrován na přihlašovací stránku při zpracování dalšího požadavku.

Stejným způsobem můžete řešit tyto dva scénáře. Podívejte se na žádost pouze před přesměrování na přihlašovací stránku. Pokud generuje požadavek na této stránce soubory cookie, bude něco zjistit.

Další informace získáte kliknutím na číslo článku znalostní báze Microsoft Knowledge Base:
306070Omezení počtu a velikosti souborů cookie v aplikaci Internet Explorer

Fiddler můžete použít k zobrazení záhlaví HTTP které jsou odesílány klientovi. Po zachycení přenosů poklepejte na žádost, a potom klepněte na tlačítko Záhlaví Chcete-li zobrazit Set-Cookie záhlaví. Pokud budete sledovat úspěšné přihlášení, zobrazí se hlavička Set-Cookie v odezvě úspěšné přihlášení.

Fiddler, naleznete na následujícím webu nástroje Fiddler:
http://www.fiddlertool.com/Fiddler/
Scénář 3

Žádost odešel klienta, jsou různé vrstvy které jsou odesílány pakety, které mohou ovlivnit. Chcete-li zjistit, zda je síťové zařízení odstranění souboru cookie, musíte zachytit trasování v síti na klienta a serveru, a prohlédněte si tělo požadavku pro soubor cookie. Chcete Prohlédněte a ujistěte se, zda byl soubor cookie odeslán požadavek klienta a kontrola serveru trasování a ujistěte se, že server obdržel soubor cookie.

Požadavek klienta

Toto je požadavek GET, po ověření uživatele. Na informace o lístku ověřování formulářů je vyznačena modře. To potvrzuje že opustili informace v souboru cookie klienta. Při použití sítě sběr nástroj, jako je sledování sítě, viz přenos, který skutečně prošla adaptér.
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
Požadavek na straně serveru

Když se podíváte na požadavek, který dosáhl na server můžete chtít Ujistěte se, že server obdržel stejné informace, Klient odesílá. Pokud server nepřijal žádné stejné informace, je třeba prozkoumat další zařízení na síť, chcete-li zjistit, kde je soubor cookie byl odebrán.

Poznámka: Také byly instancí filtrů ISAPI odstranění souborů cookie. Pokud zjistíte, že webový server obdržel soubor cookie, ale není uveden soubor cookie do protokolů služby IIS Zkontrolujte filtry ISAPI. Chcete-li odebrat filtry a zjistěte, zda máte problém je vyřešen.

Ověřovací lístek vyprší časový limit

Další běžnou příčinou k přesměrování uživatele je-li ověřování pomocí formulářů lístku vypršela. Ověřování formulářů lístek lze odchod dvěma způsoby. První scénář nastane, pokud použijete absolutní vypršení platnosti. S absolutní vypršení ověřovací lístek vyprší-li čas vypršení platnosti. Například nastavíte vypršení 20 minut a uživatel ve 2:00 hodin navštíví web. 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žíváte klouzavé vypršení platnosti scénář je o něco složitější. Soubor cookie a výsledné lístek aktualizovat, pokud uživatel navštíví web po dobu platnosti vypršelo poloviční. Například můžete nastavit vypršení 20 minut pomocí klouzavé vypršení platnosti. Uživatel navštíví web ve 2:00 PM a uživatel obdrží soubor cookie, který je nastaven na končí v 2:20 PM. Vypršení je aktualizován pouze v případě, že uživatel navštíví web po 2:10 PM. Pokud uživatel navštíví web v 2:09 PM, lístek není aktualizována, protože polovina čas vypršení platnosti neprošel. Pokud uživatel poté čeká 12 minut, návštěva webu v 2:21 PM lístek bude platnost vypršela. Uživatel je přesměrován na přihlašovací jméno stránka.

Jedním způsobem, jak řešit tento typ problému se formulářů pro přihlášení informace o souboru cookie a lístek ověřování. Tímto způsobem můžete zobrazit, jestliže soubor cookie přijala IIS a jaké jsou jejich hodnoty. To lze vyřešit napsáním modula potom zapojení modulu do kanálu požadavku. Nebudete muset změnit kód aplikace získat informace můžete potřebujete.

Přiložený vzorek funguje v Microsoft rozhraní.NET Framework 1.1 a 2.0 rozhraní.NET Framework a má komentáře v celém. Vzorek obsahuje následující soubory:
  • FormsAuthEvents.cs: Třída, která implementuje IHttpModule a spojuje do události Application_BeginRequest .
  • FormsAuthInfo.cs: Třídu, která načte soubor cookie a dešifruje lístek ověřování pomocí formulářů. Také zkontroluje aplikace Soubor Web.config, aby bylo zajištěno, že ověřování pomocí formulářů je povoleno.
  • FormsAuthConfig.cs: Třída, která načítá informace z Soubor FormsAuthLogger.config.
  • Log.cs: Soubor, který přijímá stringbuilder a zapíše hodnoty do souboru protokolu.
  • FormsAuthLogger.config: Soubor XML, který je pro čtení souboru Log.cs. To soubor musí být ve složce/Bin s knihovnou DLL vytvořeny. Tento soubor umožňuje Nakonfigurujte následující nastavení:
    • Filtrovat podle IP: můžete filtrovat sběru dat IP klienta. Tímto způsobem můžete protokolovat pouze požadavky z klienta, který je známo Tento problém reprodukovat. To snižuje velikost souboru protokolu.
    • Sběr dat typ: Určuje umístění pro uložení souboru. Ve výchozím nastavení je složka dočasných souborů technologie ASP.NET, ale to lze uložit kdekoli, dokud účet pracovního procesu nemá možnost zápisu složka.
Poznámka: Budete poskytnu odkaz ke stažení pro kód poskytnuté v Soubor FormsAuthLogger.zip.

I bude poukázat hlavní oblasti:
  1. Vytvořte třídu, která implementuje rozhraní IHttpModule .
    public class FormsAuthEvents : IHttpModule 
    {
    		…code…
    }
  2. Drátu nahoru na událost, kterou chcete prohlédnout. V této ukázce Používáme událost Application_BeginRequest . Tímto způsobem můžeme prozkoumat každý požadavek a zjistit, zda Pokud soubor cookie existuje má soubor cookie ověřování formulářů a protokolu FormsAuthenticationTicket .
    public void Init(HttpApplication application) 
    {
    	//Wire up the BeginRequest event
    	application.BeginRequest += (new EventHandler(this.Application_BeginRequest));
    }
  3. Implementujte událost Application_BeginRequest .
    private void Application_BeginRequest(Object source, EventArgs e)
    {	
       …code to log the ticket…
    }
    
  4. Získat soubor cookie ověřování formulářů a dešifrovat ji.
  5. Zaznamenává hodnoty. Doporučil bych, následující přihlášení přidání do formuláře informace. To vám umožní zarovnat formulářů ověřovací informace do protokolů služby IIS, pokud je to nutné:
    • Datum: Umožňuje zobrazit, pokud jste obdrželi žádost v.
    • RequestType: Zobrazí, zda je požadavek Get nebo Příspěvek.
    • URL: Zobrazí vzorek požadavků vedoucích k problému.
    • Odkazující Server
    • ClientIP: Vazby v požadavcích na konkrétní klient.

Jako vždy pocit volného odeslat nápady na témata, že které chcete řešit v budoucnosti sloupce nebo pomocí znalostní báze Knowledge Base Požádejte o ni formulář.

Vlastnosti

ID článku: 910439 - Poslední aktualizace: 30. května 2013 - Revize: 2.0
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: 
kbtshoot kbiis kbcode kbasp kbmt 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

 

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