Salt la conținutul principal
Asistență
Conectare

Depanarea autentificare formulare

Lucrați de oriunde de pe orice dispozitiv cu Microsoft 365

Faceți upgrade la Microsoft 365 pentru a lucra oriunde cu cele mai recente caracteristici și actualizări.

Faceți upgrade acum

ASP .NET asistență vocală coloana

Autentificare formulare de depanare

Pentru a particulariza această coloană nevoilor dumneavoastră, dorim să vă invită să remiteți idei despre subiecte care v-ar interesa ce și problemele pe care doriți să vedeți tratate în viitor articole din baza de cunoștințe și asistență vocală coloane. Puteți trimite idei şi feedback folosind formularul Cere pentru ea . De asemenea, există un link către formularul de la partea de jos a acestei coloane.

Bun venit la coloana ASP.NET suport vocea! Numele meu este Jerry Orman. Am fost cu Microsoft peste 5 ani, şi au petrecut majoritatea timpului meu axat pe Web legate de tehnologii, cum ar fi Microsoft FrontPage și noile tehnologii Microsoft SharePoint. Am petrecut anul trecut lucrul cu Microsoft ASP.NET ca un specialist în asistență. Această lună din coloana de asistență vocală, voi explică cum se depanează autentificare formulare în Microsoft ASP.NET.

Autentificare formulare de depanare

Când utilizați autentificarea de formulare într-o aplicaţie ASP.NET, pot fi mai necesare pentru a depana o problemă care apare atunci când utilizatorul este Redirecționat aleator la pagina de conectare. Într-o lume ideală, această problemă ar apărea într-un mod care ar permite ușor să atașați un depanator și capturați problema. În medii de producție, cu toate acestea, acest lucru este rar cazul. Pentru a depana o problemă aleatoare ca aceasta, trebuie să faceți log informații legate de problema, astfel încât să aveți posibilitatea să restrângeți în jos din cauza rădăcină.

În această coloană, am acoperit scurt conceptul Forms Authentication. Apoi vom uita în scenarii care duce la un utilizator fi Redirecționat către pagina de autentificare și cum se capturează date care sunt relevante pentru a izola problema. Am acoperit, de asemenea, cum se implementează o interfață IHttpModule pentru a face log informații de autentificare formulare.

Prezentare generală a autentificare formulare

Când un utilizator se autentifică la un site Web folosind autentificarea de formulare, serverul creează un modul cookie. Valoarea din modulul cookie este un bilet de autentificare formulare criptat. Modulul cookie este transmis către serverul la fiecare cerere, aplicația și clasa FormsAuthenticationModule decriptează valoarea module cookie şi determină dacă utilizatorul este valid sau nu.

În mod implicit, clasa FormsAuthenticationModule este adăugată în fișierul Machine.config. Clasa FormsAuthenticationModule gestionează procesul FormsAuthentication.

Aceasta este o intrare din fișierul Machine.config:

<httpModule>     …other modules…
<add name="FormsAuthentication"
type="System.Web.Security.FormsAuthenticationModule" />
…other modules…
</httpModule>

Traficul HTTP generale pentru autentificarea folosind autentificarea de formulare arată asemănător cu următorul:

  1. Clientul trimite o obțineți HTTP Default.aspx. Nici o formulare autentificare cookie este trimis.

  2. Serverul trimite un răspuns 302 (redirecţionare) la Login.aspx.

  3. Clientul trimite un POST de HTTP Login.aspx. Conține informațiile de conectare.

  4. Serverul trimite un răspuns 302 (redirecţionare) la Default.aspx. Modulul cookie de autentificare formulare este inclus.

  5. Clientul trimite o obțineți HTTP Default.aspx. Aceasta include modulul cookie de autentificare formulare.

Pentru mai multe informații despre implementarea și utilizarea autentificării de formulare, vizitați următorul site MSDN Web:

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).aspxPentru mai multe informații despre partajarea cookie de autentificare formulare, vizitați următorul site ASP.NET Web:

http://quickstarts.asp.net/QuickStartv20/aspnet/doc/security/formsauth.aspx

Motive că un utilizator poate fi Redirecționat către pagina de conectare

Formulare autentificare cookie se pierd

Scenariul 1


În acest scenariu, un utilizator face Log on la site-ul Web. La un moment dat, clientul trimite o solicitare de la server, și
FormsAuthenticationModule class nu primește modulul cookie. Aveți posibilitatea să determinați dacă o solicitare de utilizator nu conține modulul cookie prin activarea modulelor cookie înregistrarea în jurnal în Microsoft Internet Information Services (IIS). Pentru aceasta, urmați acești pași:

  1. Deschideți IIS Microsoft Management Console (MMC).

  2. Faceți clic dreapta pe site-ul Web și apoi faceți clic pe
    Proprietăți.

  3. Faceți clic pe fila site-ul Web și apoi faceți clic pe Activează înregistrarea în jurnal.

  4. Asiguraţi-vă că formatul jurnal Extins W3C Log File Format.

  5. Faceți clic pe Proprietăți.

  6. Faceți clic pe fila complex și apoi faceți clic pe
    Proprietăți de extins.

  7. Sub Extins proprietăți, faceți clic pentru a bifa caseta de selectare Cookie(cs(Cookie)) și Referer (cs(Referer)) caseta de selectare.

După ce apare această problemă, determinați client care a avut problema și adresă IP acel client. Filtru Jurnalul IIS pe care clientul adresa IP și vedea coloana <cookie>.

Notă Utilizaţi jurnal Parser pentru a analiza jurnalele IIS. Pentru a descărca jurnal Parser, vizitați următorul site Web Microsoft:

http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07După ce aveți lista de cereri de la acel utilizator specific, căutați pentru solicitările la pagina de conectare. Știți au fost Redirecționat către această pagină și doriți să vedeți cererile de dinaintea producerii redirecționarea. Dacă Vedeți ceva similar cu următorul, clientul fie nu trimite modulul cookie sau modulul cookie s-a eliminat din rețea între client și server.

Acest lucru este conectare inițială.

Metoda

Pagina

Răspuns

Module cookie

OBȚINEȚI

/Default.aspx

302 (redirecţionare)

Modulele cookie nu

OBȚINEȚI

/Login.aspx

200 (succes)

Modulele cookie nu

POST

/Login.aspx

302 (redirecţionare)

Modulele cookie nu

OBȚINEȚI

/Default.aspx

200 (succes)

.ASPXAUTH

OBȚINEȚI

/SomePage.aspx

302 (redirecţionare)

nu. ASPXAUTH Cookie

Acestea sunt alte cereri, urmat de o solicitare de la o pagină de pe site-ul fără. ASPXAUTH module cookie.

Metoda

Pagina

Răspuns

Module cookie

OBȚINEȚI

/SomePage.aspx

302 (redirecţionare)

nu. ASPXAUTH Cookie

OBȚINEȚI

/Login.aspx

200 (succes)

nu. ASPXAUTH Cookie

POST

/Login.aspx

302 (redirecţionare)

nu. ASPXAUTH Cookie

OBȚINEȚI

/SomePage.aspx

200 (succes)

.ASPXAUTH


Notă Prima cerere de utilizator care nu este probabil să aibă un modul cookie de autentificare formulare decât dacă doriţi să creaţi un modul cookie persistent. Jurnalul IIS va afișa doar modulele cookie care au fost primite în solicitare. Prima solicitare a modulul cookie de autentificare formulare vor fi solicitarea după o încercare de conectare cu succes.

Scenariul 2


Formulare autentificare cookie poate fi pierdut atunci când este depășit limita de module cookie pe client. În Microsoft Internet Explorer, există o limită de 20 de module cookie. După 20 modulul cookie este creată pe client, anterioară modulele cookie sunt eliminate din colecția de client. Dacă. ASPXAUTH cookie este eliminat, utilizatorul veți fi Redirecționat către pagina de conectare atunci când este procesat solicitarea următoare.

Aveți posibilitatea să depanați aceste două scenarii în același mod. Priviți solicitarea chiar înainte de redirecționare la pagina de conectare. Dacă solicitarea către această pagină generează modulele cookie, aceasta va fi ceva pentru a investiga.

Pentru mai multe informaţii, faceţi clic pe următorul număr de articol pentru a vedea articolul în baza de cunoştinţe Microsoft:

306070 număr și limitele dimensiunii de un modul cookie în Internet Explorer


Utilizați Fiddler pentru a vizualiza antete HTTP care sunt trimise către client. După ce le capturați trafic, faceți dublu clic pe o solicitare și apoi faceți clic pe anteturile pentru a vedea antetul Set-Cookie. Dacă vă urmări o conectare cu succes, veți vedea antetul Set-Cookie în răspuns o conectare cu succes.

Pentru a descărca Fiddler, vizitați următorul site Fiddler Web:

http://www.fiddlertool.com/fiddler/

Scenariul 3


După ce solicitarea lasă client, există diferite straturi care pot afecta pachetele care sunt trimise. Pentru a determina dacă un dispozitiv de rețea este eliminarea modulul cookie, trebuie să capturați o urmărire în rețea pe client și server, apoi căutați în corpul solicitării de modulul cookie. Doriți să căutați la cererea clientului pentru a vă asigura că s-a trimis cookie și verificați în urma server pentru a vă asigura că serverul a primit modulul cookie.

Cererea clientului

Aceasta este o solicitare GET după ce utilizatorul a fost autentificată. Informații de bilet de autentificare formulare este evidențiată în albastru. Acest lucru confirmă faptul că informațiile de module cookie stânga client. Când utilizați un instrument de captură de rețea, ca Netmon, vedeți traficul care a trecut prin adaptorul.

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

Solicitare de partea server

Când vă uitați la cererea care a ajuns la server, doriți asigurați-vă că serverul a primit aceleași informații pe care clientul trimite. Dacă serverul nu primește aceleași informații, trebuie să investigheze alte dispozitive în rețea pentru a determina unde s-a eliminat modulul cookie.

Notă De asemenea, au fost cazuri de filtre ISAPI eliminarea modulele cookie. Dacă ce confirmați că serverul Web a primit cookie, dar modulul cookie nu este listat în Jurnalul IIS, verificați filtrele de ISAPI. Trebuie să eliminați filtre pentru a vedea dacă problema este rezolvată.

Bilet de autentificare formulare expiră

Cele mai frecvente cauze pentru un utilizator să fie redirecționate este dacă bilet de autentificare formulare a expirat. Bilet de autentificare formulare poate expira în două moduri. Primul scenariu se produce dacă utilizați absolută de expirare. Cu absolută de expirare, bilet de autentificare expiră atunci când expiră timp de expirare. De exemplu, setați o expirare de 20 de minute, și un utilizator vizitează site-ul de la 2:00. Utilizatorul va fi Redirecționat către pagina de conectare dacă utilizatorul vizitează site-ul după 2:20 PM.

Dacă utilizați joc de expirare, scenariul este un pic mai complicată. Modulul cookie și permisul rezultate sunt actualizate dacă utilizatorul vizitează site-ul după dată de expirare este jumătate a expirat. De exemplu, setați o expirare de 20 de minute utilizând expirare joc. Un utilizator vizitează site-ul de la 2:00, iar utilizatorul primește un modul cookie care este setat să expire la 2:20. Expirare se actualizează numai dacă utilizatorul vizitează site-ul după 2:10 PM. Dacă utilizatorul vizitează site-ul de la 2:09, permisul nu este actualizat, deoarece jumătate din timpul de expirare nu a trecut. Dacă utilizatorul apoi așteaptă 12 minute, vizitați site-ul de la 2:21, permisul va fi expirat. Utilizatorul este Redirecționat către pagina de autentificare.

O modalitate de a abordare acest tip de problemă este să faceți log formulare module cookie şi bilet informații de autentificare. Astfel, puteți vedea dacă modulul cookie s-a primit de IIS și valorile sunt. Puteți face acest lucru scrie un HttpModule, și apoi conectați acel modul la canal de solicitare. Nu trebuie să modificaţi codul aplicația dvs. pentru a obține informațiile de care aveți nevoie.

Eșantion atașat funcționează în Microsoft .NET Framework 1.1 și .NET Framework 2.0 și are Comentarii pe parcursul. Eșantion include următoarele fișiere:Notă va furniza un link de descărcare pentru codul furnizat în fișierul FormsAuthLogger.zip.

Voi punct în zonele principale aici:


Ca întotdeauna, vă liber să prezinte ideile pe teme doriți abordate în viitor coloane sau din baza de cunoștințe utilizând
Formular Cere pentru ea .

Aveți nevoie de ajutor suplimentar?

Extindeți-vă competențele
Explorați instruirea
Fiți primul care obține noile caracteristici
Alăturați-vă la Microsoft Insider

V-a fost de ajutor această informație?

Vă mulțumim pentru feedback!

Vă mulțumim pentru feedback! Se pare că ar fi util să luați legătura cu unul dintre agenții noștri de asistență Office.

×