Αντιμετώπιση προβλημάτων ελέγχου ταυτότητας φορμών

Στήλη φωνητική υποστήριξη .NET ASP

Αντιμετώπιση προβλημάτων ελέγχου ταυτότητας φορμών

Για να προσαρμόσετε αυτήν τη στήλη με τις ανάγκες σας, θέλετε να προσκαλέσετε να υποβάλετε τις ιδέες σας σχετικά με θέματα που ενδιαφέρουν μπορείτε και θέματα για τα οποία θέλετε να δείτε απευθύνονται στο μέλλον, άρθρα Γνωσιακής βάσης και φωνητική υποστήριξη στήλες. Μπορείτε να υποβάλετε σας ιδέες και τα σχόλιά σας μέσω της φόρμας Σας ρωτήσει για αυτό . Υπάρχει επίσης μια σύνδεση για τη φόρμα στο κάτω μέρος αυτής της στήλης.
Καλώς ορίσατε στη στήλη φωνητική υποστήριξη ASP.NET. Το όνομά μου είναι Jerry Orman. Έχουν με Microsoft πάνω από 5 έτη και διέθεσαν οι περισσότερες μου ώρα επικεντρώνεται στις τεχνολογίες που σχετίζονται με το Web, όπως το Microsoft FrontPage και τις νέες τεχνολογίες του Microsoft SharePoint. Αφιέρωσα το τελευταίο έτος εργασία με Microsoft ASP.NET ως ένας μηχανικός υποστήριξης. Αυτό το μήνα στη στήλη υποστήριξη φωνής, θα κάνουμε εξηγούν τον τρόπο αντιμετώπισης προβλημάτων που αφορούν τον έλεγχο ταυτότητας φορμών στο Microsoft ASP.NET.

Αντιμετώπιση προβλημάτων ελέγχου ταυτότητας φορμών

Όταν χρησιμοποιείτε τον έλεγχο ταυτότητας φορμών σε μια εφαρμογή ASP.NET, ενδέχεται να προκύψει η ανάγκη να αντιμετωπίσετε ένα ζήτημα που προκύπτει όταν ο χρήστης τυχαία ανακατευθύνεται στη σελίδα σύνδεσης. Σε έναν ιδανικό κόσμο, αυτό το ζήτημα θα προκύψει με τρόπο που θα θέλατε να μπορείτε εύκολα να επισυνάψετε ένα πρόγραμμα εντοπισμού σφαλμάτων και να καταγράψετε το πρόβλημα. Σε περιβάλλοντα παραγωγής, ωστόσο, αυτή είναι σπάνια περίπτωση. Για να αντιμετωπίσετε τυχαία πρόβλημα όπως αυτή, πρέπει να καταγράψετε τις πληροφορίες που σχετίζονται με το πρόβλημα, ώστε να μπορείτε να προσδιορίσετε την αρχική αιτία.

Σε αυτήν τη στήλη, εμείς θα καλύπτει εν συντομία την έννοια ελέγχου ταυτότητας φορμών. Εμείς στη συνέχεια θα εξετάσει ποια σενάρια οδηγήσει σε ένα χρήστη να ανακατευθύνονται στη σελίδα σύνδεσης και τον τρόπο καταγραφής δεδομένων που σχετίζονται με την απομόνωση του προβλήματος. Θα, επίσης, να καλύπτει τον τρόπο υλοποίησης μιας διασύνδεσης IHttpModule για να καταγράψει τις πληροφορίες ελέγχου ταυτότητας φορμών.

Επισκόπηση του ελέγχου ταυτότητας φορμών

Όταν ένας χρήστης εκτελεί έλεγχο ταυτότητας σε μια τοποθεσία Web χρησιμοποιώντας τον έλεγχο ταυτότητας φορμών, ο διακομιστής δημιουργεί ένα cookie. Η τιμή του cookie είναι ένα δελτίο ελέγχου ταυτότητας φορμών κρυπτογραφημένα. Περνάει το cookie στο διακομιστή σε κάθε αίτηση για την εφαρμογή και την κλάση FormsAuthenticationModule αποκρυπτογραφεί την τιμή του cookie και προσδιορίζει αν ο χρήστης είναι έγκυρη ή όχι.

Από προεπιλογή, η κλάση FormsAuthenticationModule προστίθεται στο αρχείο Machine.config. Η κλάση FormsAuthenticationModule διαχειρίζεται τη διαδικασία FormsAuthentication.

Η ακόλουθη είναι μια καταχώρηση από το αρχείο Machine.config:
<httpModule>     …other modules…
<add name="FormsAuthentication"
type="System.Web.Security.FormsAuthenticationModule" />
…other modules…
</httpModule>

Η γενική κυκλοφορία HTTP για τον έλεγχο ταυτότητας χρησιμοποιώντας έλεγχο ταυτότητας φορμών μοιάζει με το ακόλουθο:
  1. Ο υπολογιστής-πελάτης στέλνει ένα HTTP GET στη σελίδα Default.aspx. Αποστέλλεται χωρίς cookie ελέγχου ταυτότητας φορμών.
  2. Ο διακομιστής αποστέλλει μια απόκριση 302 (ανακατεύθυνση) σε Login.aspx.
  3. Ο υπολογιστής-πελάτης στέλνει ένα HTTP POST Login.aspx. Περιλαμβάνει τις πληροφορίες σύνδεσης.
  4. Ο διακομιστής αποστέλλει μια απόκριση 302 (ανακατεύθυνση) στη σελίδα Default.aspx. Περιλαμβάνεται το cookie ελέγχου ταυτότητας φορμών.
  5. Ο υπολογιστής-πελάτης στέλνει ένα HTTP GET στη σελίδα Default.aspx. Αυτό περιλαμβάνει το cookie ελέγχου ταυτότητας φορμών.
Για περισσότερες πληροφορίες σχετικά με την υλοποίηση και τη χρήση ελέγχου ταυτότητας φορμών, επισκεφθείτε τις ακόλουθες τοποθεσίες του MSDN στο Web:Για περισσότερες πληροφορίες σχετικά με την κοινή χρήση cookies ελέγχου ταυτότητας φορμών, επισκεφθείτε την ακόλουθη τοποθεσία Web του ASP.NET:

Λόγοι που ένας χρήστης ενδέχεται να ανακατευθυνθείτε σε σελίδα σύνδεσης

Χάνεται το cookie ελέγχου ταυτότητας φορμών

Σενάριο 1

Σε αυτό το σενάριο, ένας χρήστης συνδέεται στην τοποθεσία Web. Σε κάποιο σημείο, ο υπολογιστής-πελάτης στέλνει μια αίτηση στο διακομιστή, και το
Κλάση FormsAuthenticationModule δεν λαμβάνει το cookie. Μπορείτε να καθορίσετε εάν μια αίτηση χρήστη περιέχει το cookie, ενεργοποιώντας την καταγραφή στο Microsoft Internet Information Services (IIS) το cookie. Για να γίνει αυτό, ακολουθήστε τα εξής βήματα:
  1. Ανοίξτε την Κονσόλα διαχείρισης της Microsoft (MMC) των υπηρεσιών IIS.
  2. Κάντε δεξιό κλικ στην τοποθεσία Web και, στη συνέχεια, κάντε κλικ στο κουμπί
    Ιδιότητες.
  3. Κάντε κλικ στην καρτέλα τοποθεσίας Web και, στη συνέχεια, κάντε κλικ στο κουμπί Ενεργοποίηση καταγραφής.
  4. Βεβαιωθείτε ότι η μορφή αρχείου καταγραφής W3C μορφή εκτεταμένου αρχείου καταγραφής.
  5. Κάντε κλικ στο κουμπί Ιδιότητες.
  6. Κάντε κλικ στην καρτέλα για προχωρημένους και στη συνέχεια κάντε κλικ στο κουμπί
    Σύνθετες ιδιότητες.
  7. Στην περιοχή Σύνθετες ιδιότητες, κάντε κλικ για να επιλέξετε το πλαίσιο ελέγχου Cookie(cs(Cookie)) και το Referer (cs(Referer)) το πλαίσιο ελέγχου.
Μετά από αυτό το ζήτημα, προσδιορίστε ποιος πελάτης είχε το πρόβλημα και τη διεύθυνση IP αυτού του υπολογιστή-πελάτη. Φιλτράρετε το αρχείο καταγραφής των υπηρεσιών IIS στη διεύθυνση IP του πελάτη και προβολή της στήλης <cookie>.

Σημείωση Μπορείτε να χρησιμοποιήσετε το πρόγραμμα καταγραφής ανάλυσης για την ανάλυση των αρχείων καταγραφής των υπηρεσιών IIS. Για να κάνετε λήψη του αρχείου καταγραφής ανάλυσης, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft στο Web:Αφού έχετε τη λίστα των αιτήσεων από το συγκεκριμένο χρήστη, κάντε αναζήτηση για τις αιτήσεις στη σελίδα σύνδεσης. Γνωρίζετε ότι αυτά έχουν ανακατευθυνθεί σε αυτήν τη σελίδα, και θέλετε να δείτε τις αιτήσεις πριν από την εμφάνιση της ανακατεύθυνσης. Εάν δείτε κάτι παρόμοιο με το ακόλουθο, το πρόγραμμα-πελάτη είτε δεν έστειλε το cookie ή το cookie έχει καταργηθεί στο δίκτυο μεταξύ του υπολογιστή-πελάτη και του διακομιστή.

Πρόκειται για την αρχική σύνδεση.
Η μέθοδοςΣελίδαΑπόκρισηΤα cookies
ΛΉΨΗ/Default.aspx302 (ανακατεύθυνση)Cookies
ΛΉΨΗ/Login.aspx200 (επιτυχία)Cookies
ΚΑΤΑΧΏΡΗΣΗ/Login.aspx302 (ανακατεύθυνση)Cookies
ΛΉΨΗ/Default.aspx200 (επιτυχία).ASPXAUTH
ΛΉΨΗ/SomePage.aspx302 (ανακατεύθυνση)Αριθ. Το Cookie ASPXAUTH
Πρόκειται για άλλες αιτήσεις, ακολουθούμενο από μια αίτηση σε μια σελίδα στην τοποθεσία χωρίς το. ASPXAUTH cookie.
Η μέθοδοςΣελίδαΑπόκρισηΤα cookies
ΛΉΨΗ/SomePage.aspx302 (ανακατεύθυνση)Αριθ. Το Cookie ASPXAUTH
ΛΉΨΗ/Login.aspx200 (επιτυχία)Αριθ. Το Cookie ASPXAUTH
ΚΑΤΑΧΏΡΗΣΗ/Login.aspx302 (ανακατεύθυνση)Αριθ. Το Cookie ASPXAUTH
ΛΉΨΗ/SomePage.aspx200 (επιτυχία).ASPXAUTH

Σημείωση Η πρώτη αίτηση από αυτόν το χρήστη δεν είναι πιθανό να έχετε ένα cookie ελέγχου ταυτότητας φορμών, εκτός και αν θέλετε να δημιουργήσετε ένα μόνιμο cookie. Το αρχείο καταγραφής IIS θα εμφανίσει μόνο τα cookies που υποβλήθηκαν στην αίτηση. Την πρώτη αίτηση για το cookie ελέγχου ταυτότητας φορμών θα είναι σχετικά με το αίτημα μετά από μια απόπειρα σύνδεσης ολοκληρώθηκε με επιτυχία.
Σενάριο 2

Το cookie ελέγχου ταυτότητας φορμών μπορεί επίσης να χαθεί όταν γίνει υπέρβαση ορίου του cookie του προγράμματος-πελάτη. Στον Microsoft Internet Explorer, υπάρχει ένα όριο των 20 cookie. Μετά την 20ή cookie δημιουργείται στον υπολογιστή-πελάτη, προηγούμενη cookies καταργούνται από τη συλλογή του υπολογιστή-πελάτη. Εάν το. Το cookie ASPXAUTH θα καταργηθεί, ο χρήστης θα ανακατευθυνθείτε στη σελίδα πρόσβασης κατά την επεξεργασία της επόμενης αίτησης.

Μπορείτε να αντιμετωπίσετε αυτά τα δύο σενάρια με τον ίδιο τρόπο. Δείτε την αίτηση ακριβώς πριν από την ανακατεύθυνση στη σελίδα πρόσβασης. Εάν η αίτηση για αυτήν τη σελίδα δημιουργεί τα cookies, αυτό θα είναι κάτι για να ερευνήσετε.

Για περισσότερες πληροφορίες, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

306070 αριθμός και όρια μεγέθους ενός cookie στον Internet Explorer


Μπορείτε να χρησιμοποιήσετε το Fiddler για να προβάλετε τις κεφαλίδες HTTP που αποστέλλονται στον υπολογιστή-πελάτη. Μετά την καταγραφή της κίνησης, κάντε διπλό κλικ στην αίτηση και, στη συνέχεια, κάντε κλικ στο κουμπί κεφαλίδες για να δείτε την επικεφαλίδα σύνολο Cookie. Εάν εντοπίζετε μια επιτυχής σύνδεση, θα δείτε την επικεφαλίδα σύνολο Cookie στην απόκριση του μια επιτυχή σύνδεση.

Για να κάνετε λήψη Fiddler, επισκεφθείτε την ακόλουθη τοποθεσία Fiddler Web:
Σενάριο 3

Μετά την αίτηση αφήνει τον υπολογιστή-πελάτη, υπάρχουν διάφορα επίπεδα που μπορεί να επηρεάσει τα πακέτα που αποστέλλονται. Για να προσδιορίσετε αν μια συσκευή δικτύου καταργεί το cookie, πρέπει να καταγράψετε ένα ίχνος δικτύου του υπολογιστή-πελάτη και στο διακομιστή, και στη συνέχεια κοιτάξτε στο σώμα της αίτησης για το cookie. Θέλετε να δείτε την αίτηση του προγράμματος-πελάτη για να βεβαιωθείτε ότι το cookie αποστάλθηκε και ελέγξτε το διακομιστή ανίχνευσης για να βεβαιωθείτε ότι ο διακομιστής έλαβε το cookie.

Αίτηση προγράμματος-πελάτη

Αυτή είναι μια αίτηση GET αφού έχει γίνει έλεγχος ταυτότητας του χρήστη. Οι πληροφορίες δελτίου ελέγχου ταυτότητας φορμών επισημαίνεται με μπλε χρώμα. Αυτό επιβεβαιώνει ότι τις πληροφορίες του cookie παραμένουν στον υπολογιστή-πελάτη. Όταν χρησιμοποιείτε ένα εργαλείο καταγραφής δικτύου, όπως εποπτείας δικτύου, μπορείτε να δείτε την κίνηση που πράγματι φτάσει στον προορισμό του προσαρμογέα.
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

Αίτηση διακομιστή

Όταν κοιτάζετε την αίτηση που έφτασε στο διακομιστή, που θέλετε να βεβαιωθείτε ότι ο διακομιστής έλαβε τις ίδιες πληροφορίες που αποστέλλονται από τον υπολογιστή-πελάτη. Εάν ο διακομιστής δεν έλαβε τις ίδιες πληροφορίες, πρέπει να ερευνήσετε άλλες συσκευές στο δίκτυο για να προσδιορίσετε πού έχει καταργηθεί το cookie.

Σημείωση Έχουν υπάρξει επίσης παρουσίες των φίλτρων ISAPI, καταργώντας τα cookies. Εάν επιβεβαιώσετε ότι ο διακομιστής Web έλαβε το cookie, αλλά το cookie δεν εμφανίζεται στα αρχεία καταγραφής των υπηρεσιών IIS, ελέγξτε τα φίλτρα ISAPI. Ίσως χρειαστεί να καταργήσετε τα φίλτρα για να διαπιστώσετε εάν επιλύθηκε το ζήτημα.

Το χρονικό όριο του δελτίου ελέγχου ταυτότητας φορμών

Η συνηθισμένη αιτία για ένα χρήστη να γίνει ανακατεύθυνση είναι εάν έχει λήξει το δελτίο ελέγχου ταυτότητας φορμών. Το δελτίο ελέγχου ταυτότητας φορμών μπορεί να λήξει το χρονικό όριο με δύο τρόπους. Το πρώτο σενάριο προκύπτει εάν χρησιμοποιείτε απόλυτη λήξης. Με απόλυτη λήξης, το δελτίο ελέγχου ταυτότητας λήγει όταν λήξει ο χρόνος λήξης. Για παράδειγμα, μπορείτε να ορίσετε μια λήξης 20 λεπτών και ένας χρήστης επισκεφθεί την τοποθεσία στις 2:00 μμ. Ο χρήστης θα ανακατευθύνονται στη σελίδα σύνδεσης, εάν ο χρήστης επισκεφθεί την τοποθεσία μετά από 2:20 ΜΜ.

Εάν χρησιμοποιείτε κλιμακωτής λήξης, το σενάριο είναι λίγο πιο περίπλοκη. Το cookie και το εισιτήριο που προκύπτει ενημερώνονται, εάν ο χρήστης επισκεφθεί την τοποθεσία μετά την λήξει από το ήμισυ του χρόνου λήξης. Για παράδειγμα, μπορείτε να ορίσετε μια λήξης 20 λεπτών χρησιμοποιώντας κλιμακωτής λήξης. Ένας χρήστης επισκεφθεί την τοποθεσία στις 2:00 μμ, και ο χρήστης λαμβάνει ένα cookie που έχει οριστεί να λήξει στις 2:20 ΜΜ. Τη λήξη ενημερώνεται μόνο εάν ο χρήστης επισκεφθεί την τοποθεσία μετά από 2:10 μμ. Εάν ο χρήστης επισκεφθεί την τοποθεσία στις 2:09 μμ, το εισιτήριο δεν ενημερώνεται, επειδή το ήμισυ του χρόνου λήξης δεν έχει περάσει. Εάν ο χρήστης περιμένει στη συνέχεια 12 λεπτά, επισκεφθείτε την τοποθεσία της στις 2:21 μμ, το εισιτήριο θα λήξει. Ο χρήστης ανακατευθύνεται στη σελίδα σύνδεσης.

Ένας τρόπος για την προσέγγιση του ζητήματος αυτού του τύπου είναι να καταγράψει τις πληροφορίες cookie και δελτίο ελέγχου ταυτότητας του φόρμες. Με αυτόν τον τρόπο, μπορείτε να δείτε εάν το cookie έχει ληφθεί από τις υπηρεσίες IIS και οι τιμές είναι. Αυτό μπορείτε να το κάνετε εγγραφή μιας HttpModuleκαι, στη συνέχεια, να συνδέσετε αυτήν τη λειτουργική μονάδα σε αίτηση διοχέτευση. Δεν θα πρέπει να τροποποιήσετε κώδικα της εφαρμογής σας για να λάβετε τις πληροφορίες που χρειάζεστε.

Το δείγμα συνημμένο λειτουργεί με το Microsoft .NET Framework 1.1 και το .NET Framework 2.0 και έχει σχόλια σε όλη τη διάρκεια. Το δείγμα περιλαμβάνει τα ακόλουθα αρχεία:Σημείωση που θα παρέχουν μια σύνδεση λήψης για τον κώδικα που παρέχονται στο αρχείο FormsAuthLogger.zip.

Θα παραπέμψω αναφέρονται εδώ οι κύριες περιοχές:

Όπως πάντα, αίσθηση ελεύθερη να υποβάλουν ιδέες σχετικά με θέματα που θέλετε στο μέλλον απευθύνεται στήλες ή της Γνωσιακής Βάσης της Microsoft χρησιμοποιώντας το
Ερώτηση για την φόρμα.
Ιδιότητες

Αναγνωριστικό άρθρου: 910439 - Τελευταία αναθεώρηση: 17 Ιαν 2017 - Αναθεώρηση: 1

Σχόλια