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

ASP .NET podpory Voice sloupec

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 adresovány v budoucnu články znalostní báze a podpora hlasové sloupce. Můžete odeslat nápady a názor pomocí formuláře Požádat pro něj . Je také odkaz na formulář v dolní části tohoto sloupce.
Vítá vás sloupec ASP.NET podpory Voice! 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. Mít čas strávený poslední rok práci s Microsoft ASP.NET jako pracovníka podpory. Tento měsíc ve sloupci podpora hlasové kliknu vysvětlují, jak Poradce při potížích s ověřování pomocí formulářů v aplikaci 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, může být nutné vyřešit problém, který nastane, když bude uživatel přesměrován na přihlašovací stránku náhodně. V ideálním světě tento problém by nastat způsobem, který umožní snadno připojit ladicí program a zachytit problém. V provozním prostředí to je 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 hlavní příčina.

V tomto sloupci jsme budete krátce vztahovat pojem ověřování pomocí formulářů. Jsme budete vypadat do scénáře, které vedou k uživatel přesměrován na přihlašovací stránku a jak sbírat data, vztahující se 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ářů

Jakmile provede uživatel ověření k webovému serveru pomocí 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 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í je přidán FormsAuthenticationModule třídy v souboru Machine.config. Třídy FormsAuthenticationModule spravuje proces ověřování pomocí formulářů.

Položky v 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 pro ověřování pomocí ověřování pomocí formulářů 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 HTTP POST Login.aspx. 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í formulářů.
Další informace o implementaci a použití ověřování pomocí formulářů naleznete na následujících webech MSDN:Další informace o sdílení souborů cookie ověřování formulářů naleznete na následujícím webu technologie ASP.NET:

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. Můžete určit, pokud požadavek uživatele neobsahuje soubor cookie povolíte soubory cookie protokolování v Internetová informační služba (IIS). Chcete-li to provést, postupujte takto:
  1. Otevřete serveru IIS konzola Microsoft Management Console (MMC).
  2. Klepněte pravým tlačítkem myši na webu a potom klepněte na tlačítko
    Vlastnosti.
  3. Klepněte na kartu Server WWW a potom klepněte na tlačítko Povolit protokolování.
  4. Ujistěte se, že formát protokolu je Formát protokolu W3C Extended.
  5. Klepněte na příkaz Vlastnosti.
  6. Klepněte na kartu Upřesnit a potom klepněte na tlačítko
    Rozšířené vlastnosti.
  7. Ve skupinovém rámečku Rozšířené vlastnosti, klepnutím zaškrtněte políčko Cookie(cs(Cookie)) a odkazující server (cs(Referer)) políčko.
Po nastane tento problém, zjistěte, 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í sloupce <cookie>.

Poznámka: Analyzátor protokolu můžete použít k analýze protokolů služby IIS. Chcete-li stáhnout analyzátor protokolu, naleznete na následujícím webu společnosti Microsoft:Až budete mít seznam požadavků z určitého uživatele, vyhledejte požadavky na přihlašovací stránku. Víte, že byly přesměrováni na tuto stránku a chcete zobrazit požadavky předtím, než došlo k přesměrování. Pokud se něco podobné následujícímu klienta buď neodeslal soubor cookie nebo soubor cookie byl odebrán v síti mezi klientem a serverem.

Toto je první přihlášení.
MetodaStránkyOdpověďSoubory cookie
ZÍSKAT/Default.aspx302 (přesměrování)Žádné soubory cookie
ZÍSKAT/Login.aspx200 (úspěch)Žádné soubory cookie
PŘÍSPĚVEK/Login.aspx302 (přesměrování)Žádné 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, aniž by. ASPXAUTH souborů cookie.
MetodaStránkyOdpověďSoubory cookie
ZÍSKAT/SomePage.aspx302 (přesměrování)Ne. ASPXAUTH Cookie
ZÍSKAT/Login.aspx200 (úspěch)Ne. ASPXAUTH Cookie
PŘÍSPĚVEK/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ě soubor cookie ověřování formulářů Pokud vytváříte trvalý soubor cookie. Do protokolu služby IIS bude pouze zobrazit soubory cookie, které byly přijaty v požadavku. První požadavek na ověřovací soubor cookie formulářů bude na žádost po pokusu o přihlášení úspěšný.
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 Internet Explorer je omezena na 20 souborů cookie. Po 20 soubor cookie je vytvořen v klientském počítači, předchozí soubory cookie budou odebrány z kolekce klienta. Pokud. ASPXAUTH cookie je odebrána, 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 před přesměrování na přihlašovací stránku. Pokud požadavek na této stránce generuje soubory cookie, bude to něco prozkoumat.

Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:

306070 číslo a omezení velikosti souborů cookie v aplikaci Internet Explorer


Fiddler můžete použít k zobrazení záhlaví HTTP odeslané klientem. Po zachycení přenosů poklepejte na žádost a klepněte na tlačítko Zobrazit záhlaví Set-Cookie záhlaví . Můžete sledovat úspěšné přihlášení, zobrazí se hlavička Set-Cookie v odpovědi úspěšné přihlášení.

Fiddler stáhnout, navštivte následující web Fiddler:
Scénář 3

Žádost odešel klienta, existují různé vrstvy, které mohou ovlivňovat všechny pakety, které jsou odesílány. Chcete-li zjistit, pokud síťové zařízení odebere soubor cookie, je nutné zachytit trasování v síti na klienta a serveru a potom tělo požadavku pro soubor cookie. Chcete vyhledat a ujistěte se, zda byl soubor cookie odeslán požadavek klienta a zkontrolujte trasování serveru a ujistěte se, že server obdržel soubor cookie.

Požadavek klienta

Toto je požadavek GET, poté, co byl uživatel ověřen. Informace o lístku ověřování formulářů je zvýrazněn modře. To potvrzuje, že opustili informace v souboru cookie klienta. Při použití nástroje pro zachycení sítě, jako je sledování sítě, v tématu přenosy, které ve skutečnosti přešel přes adaptér.
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

Požadavek na straně serveru

Při pohledu na požadavek na dosažení serveru chcete Ujistěte se, že server obdržel stejné informace, které klient odešle. Server nepřijal žádné stejné informace, je třeba prozkoumat další zařízení v síti 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. Bude pravděpodobně nutné odebrat filtry zobrazíte, pokud je problém vyřešen.

Ověřovací lístek vyprší.

Další běžnou příčinou k přesměrování uživatele je, pokud vypršela platnost lístku ověřování formulářů. Ověřovací lístek může časový limit v dvěma způsoby. První scénář nastane, pokud použijete absolutní vypršení platnosti. S absolutní vypršení ověřovací lístek vyprší po vypršení doby platnosti. Například nastavíte vypršení 20 minut a uživatel navštíví web na 2:00 PM. Uživatel bude přesměrován 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ší. Pokud uživatel navštíví web po uplynutí poloviční čas vypršení platnosti souboru cookie a výsledný lístek aktualizovány Například nastavíte vypršení 20 minut pomocí klouzavé vypršení platnosti. Uživatel navštíví web na 2:00 PM a uživatel obdrží soubor cookie, který je nastaven na končí v 2:20 odp. Vypršení je aktualizován pouze, pokud uživatel navštíví web po 2:10 odp. Pokud uživatel navštíví web na 14:09:00, lístek není aktualizována, protože polovinu času vypršení platnosti neprošel. Pokud uživatel pak čeká 12 minut, návštěva webu v 2:21 PM, bude vypršela platnost lístku. Uživatel je přesměrován na přihlašovací stránku.

Jedním ze způsobů přístupu tento typ problému se protokolovat informace cookie a lístek ověřování formulářů. Tímto způsobem můžete zobrazit, pokud byl přijat soubor cookie služby IIS a hodnoty jsou. Lze provést psaní modula potom zapojení modulu do kanálu požadavku. Nebudete muset změnit kód aplikace získat informace, které potřebujete.

Přiložený vzorek funguje v Microsoft rozhraní.NET Framework 1.1 a 2.0 rozhraní.NET Framework a obsahuje komentáře v celém. Vzorek obsahuje následující soubory:Poznámka: budete poskytnu odkaz ke stažení pro kód v souboru FormsAuthLogger.zip.

I bude poukázat hlavní oblasti:

Jako vždy, atmosféru volného odeslat nápady na témata chcete určeno v budoucnosti sloupce nebo pomocí znalostní báze Knowledge Base
Dotaz pro jeho formuláře.
Vlastnosti

ID článku: 910439 - Poslední kontrola: 16. 1. 2017 - Revize: 1

Váš názor