Ondersteuning voor ASP.NET-stem kolom
Wat zijn de Cookie en tickets voor Forms-verificatie
Als u deze kolom aan uw behoeften wilt aanpassen, nodigen we u uit uw ideeën over onderwerpen in te dienen die interessant zijn voor u en problemen die u in toekomstige behandeld wilt zien worden in Knowledge Base-artikelen en in kolommen voor spraak-ondersteuning. U kunt uw ideeën en feedback via het formulier Vragen voor het indienen. Er is ook een koppeling naar het formulier onderaan in deze kolom.
Inleiding
Welkom bij de ondersteuning voor spraak van Microsoft ASP.NET-kolom! Ik ben Nilay B. Shah met het ASP.NET developer support team. Ik hebt gewerkt met ondersteuning voor ASP.NET voor meer dan anderhalf jaar. Verificatie van formulieren is echt een leuke verificatie functie. Dit artikel heeft betrekking op bepaalde problemen die gebruikers hebben gevonden verwarring met de verificatie van formulieren, zoals de relatie met het ticket van forms-verificatie en de verificatiecookie formulieren en de relevante instellingen. Ik wil graag Jerry Orman, technisch specialist voor de ASP.NET-ondersteuningsteam voor zijn ongelooflijke help!
Mensen worden soms nadenken over forms-verificatie "tickets" en "cookies" omdat ze zijn nauw verwant. Ik vragen zoals deze zijn tegenkomt: kan iedereen verklaren het verschil tussen de vervaldatum van de cookie en het verlopen van tickets? Als de cookie verloopt, wordt de gebruiker omgeleid naar de aanmeldingspagina. Wat gebeurt er wanneer het ticket verloopt? Het ook brengt de cookie verloopt? Wat SlidingUpdate eigenlijk werkt?
Ik zal zich richten op deze twee aspecten van Forms-verificatie in dit artikel om de volgende vragen te beantwoorden:
-
Wat is verificatieticket formulieren en formulieren verificatiecookie? Hoe zijn deze aan elkaar gerelateerd?
-
Wat is de rol van een ticket in Forms-verificatie?
-
Hoe zijn de vervaldatum van de cookie en het verlopen van tickets aan elkaar gerelateerd?
-
Hoe werkt het verschuivende vervaldatum in het kader van tickets voor forms-verificatie en verificatiecookie formulieren?
-
Waar kunt u de eigenschap time-out van de verificatiecookie formulieren en tickets voor forms-verificatie instellen?
-
Probleem scenario: forms-verificatie kan een time-out voordat het kenmerk time-outwaarde die is ingesteld in het configuratiebestand
Wat is verificatieticket formulieren en formulieren verificatiecookie? Hoe zijn deze aan elkaar gerelateerd?
Formulieren verificatiecookie is niets anders dan de container voor tickets voor forms-verificatie. Het ticket wordt doorgegeven als de waarde van de verificatiecookie formulieren bij elke aanvraag en door forms-verificatie op de server wordt gebruikt voor het identificeren van een geverifieerde gebruiker.
Echter, als we het gebruik van cookieloze forms-verificatie kiest, het ticket wordt doorgegeven in de URL in een versleutelde indeling. Cookieloze forms-verificatie wordt gebruikt, omdat soms de clientbrowsers cookies blokkeren. Deze functie is geïntroduceerd in Microsoft .NET Framework 2.0.
Ga naar de volgende website van Microsoft Developer Network (MSDN) voor meer informatie:
Wat is de rol van een ticket in Forms-verificatie?
Het ticket van forms-verificatie wordt gebruikt voor de ASP.NET-toepassing die u vertellen. Ticket is dus bouwsteen van beveiliging voor Forms-verificatie.
Het ticket is gecodeerd en ondertekend met het element < machineKey > configuratie van het bestand Machine.config. ASP.NET 2.0 gebruikt de decryptionKey en het nieuwe kenmerk decodering van het element < machineKey > voor het coderen van tickets voor forms-verificatie. Het kenmerk decodering geeft u de coderingsalgoritme te gebruiken. ASP.NET 1.1 en 1.0 Gebruik 3DES-codering, die kan niet worden geconfigureerd. Knoeien met de waarde van het ticket wordt bepaald door een fout voor het decoderen van het ticket op de server. Als gevolg hiervan, wordt de gebruiker omgeleid naar de aanmeldingspagina.
Als de toepassing wordt geïmplementeerd in een Web-farm, moet u ervoor zorgen dat de configuratiebestanden op elke server delen dezelfde waarde voor de validationKey en decryptionKey kenmerken in de code < machineKey > , die respectievelijk voor hashing en decodering van het ticket worden gebruikt. U moet dit doen omdat u niet garanderen welke server opeenvolgende aanvragen worden verwerkt. Ga naar de volgende MSDN-website voor meer informatie over codering van FormsAuthenticationTicket en overwegingen voor de implementatie van Web-farm:
http://msdn2.microsoft.com/en-us/library/ms998288.aspxIn het volgende Microsoft Knowledge Base-artikelen vindt u een stapsgewijze beschrijving van de methoden voor het genereren van sleutels handmatig:
Het 312906 om sleutels te maken met behulp van Visual C# .NET voor Forms-verificatie
Het 313091 om sleutels te maken met behulp van Visual Basic .NET voor Forms-verificatie
Tickets voor Forms-verificatie kunnen handmatig worden gegenereerd met behulp van de klasse FormsAuthenticationTicket . Ga naar de volgende MSDN-website voor meer informatie:
http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationticket.aspx
Hoe zijn de vervaldatum van de cookie en het verlopen van tickets aan elkaar gerelateerd?
In het geval van niet-blijvende cookie het ticket is verlopen, cookie verloopt ook als de gebruiker wordt omgeleid naar de aanmeldingspagina. Aan de andere kant, als het ticket is gemarkeerd als permanent, waar de cookie is opgeslagen op de client in browsers gebruiken dezelfde verificatiecookie aan te melden bij de website van elk moment. Maar kunnen we gebruiken de FormsAuthentication.SignOut methode voor het verwijderen van permanente of tijdelijke cookies expliciet.
Ga naar de volgende MSDN-website voor meer informatie over de methode FormsAuthentication.SignOut :
http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthentication.signout.aspxMet cookieloze forms-verificatie als de browser is gesloten, het ticket verloren en een nieuw ticket bij de volgende aanvraag worden gegenereerd.
Hoe werkt het verschuivende vervaldatum in het kader van tickets voor forms-verificatie en verificatiecookie formulieren?
Verschuivende aflooptijd werkt op exact dezelfde manier!
We nemen een voorbeeld: als de aanmeldingspagina wordt benaderd om 5:00 00:00:00 PM, deze moet verlopen op 5:10:00: 00:00 PM als het kenmerk timeout 10 als het kenmerk slidingExpiration is ingesteld op TRUE. Nu, als de webpagina wordt bezocht op 5:05 00:00:00 PM, cookies en ticket time-outperiode opnieuw ingesteld op 5:15-00:00:00 uur.
Opmerking Als de webpagina wordt geopend voor de helft van de fasen verlopen tijd, wordt de verlooptijd van de ticket niet opnieuw ingesteld. Fore als bijvoorbeeld een webpagina wordt geopend op 5:04 00:00:00 PM, cookies en ticket time-outperiode wordt niet opnieuw ingesteld.
Ga naar de volgende MSDN-website voor meer informatie:
http://msdn2.microsoft.com/en-us/library/1d3t3c61(vs.71).aspx
Waar kunt u de time-outwaarde van de verificatiecookie formulieren en tickets voor forms-verificatie instellen?
Er is de enige instelling die u kunt aanbrengen in het bestand Web.config of Machine.config-bestand in de code < formulieren > . Deze wijziging bepaalt de time-outperiode van forms-verificatie in de context van een ticket of een cookie, tenzij het ticket wordt handmatig gegenereerd.
<!--forms Attributes:
name="[cookie name]" - Sets the name of the cookie used for Forms Authentication.
loginUrl="[url]" - Sets the URL to redirect client to for authentication.
protection="[All|None|Encryption|Validation]" - Sets the protection mode for data in cookie.
timeout="[minutes]" - Sets the duration of time for cookie to be valid (reset on each request).
path="/" - Sets the path for the cookie.
requireSSL="[true|false]" - Should the forms authentication cookie be sent only over SSL?
slidingExpiration="[true|false]" - Should the forms authentication cookie and ticket be reissued if they are about to expire?
-->
Ga naar de volgende MSDN-website voor meer informatie:
http://msdn2.microsoft.com/en-us/library/1d3t3c61.aspxAls het ticket handmatig is gegenereerd met behulp van de klasse FormsAuthenticationTicket , kan de time-out worden ingesteld via het kenmerk verlopen . Deze waarde wordt de waarde van het kenmerk time-out opgegeven in de configuratiebestanden overschrijven.
Ga naar de volgende MSDN-website voor meer informatie over de leden van de FormsAuthenticationTicket :
http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationticket_members.aspx
Probleem scenario: forms-verificatie kan een time-out voordat het kenmerk time-outwaarde die is ingesteld in het configuratiebestand
Als de formulieren verificatieticket handmatig is gegenereerd, overschrijft de eigenschap time-out van het ticket de waarde die is ingesteld in het configuratiebestand. Dus als deze waarde kleiner dan de waarde in het configuratiebestand is, de formulieren verificatieticket verlopen voordat de time-out voor het configuratiebestand van het kenmerk waarde en vice versa. Bijvoorbeeld, gaan we ervan uit dat het kenmerk < formulieren >timeout is ingesteld op 30 in het bestand Web.config en de waarde van de vervaldatum van het ticket is ingesteld op 20 minuten. In dit geval het forms-verificatieticket verloopt na 20 minuten en de gebruiker aan te melden na die opnieuw zijn.
Verwante koppelingen
910439 verificatie van formulieren oplossen
891032 problemen met ASP.NET
301240 het forms-verificatie in uw ASP.NET-toepassing implementeren met behulp van C# .NET
308157 het forms-verificatie in uw ASP.NET-toepassing implementeren met behulp van Visual Basic .NET
Ik hoop dat u deze informatie nuttig is in de versnelling van de verwarring die betrokken zijn bij de ASP.NET forms authentication ticket en cookie gevonden. Vergeet niet dat de ondersteuning voor spraak-kolommen zijn voor u! Omdat altijd gerust ideeën over onderwerpen die u wilt indienen wordt verholpen in toekomstige kolommen of in de Microsoft Knowledge Base met behulp van de
Vragen voor het formulier.