Förstå formulär autentiseringsbiljetten och Cookie


Stöd för ASP.NET röst kolumn


Förstå formulär autentiseringsbiljetten och Cookie

Vi vill bjuda in dig att skicka dina idéer om ämnen som intresserar du och problem som du vill se i framtida adresserat kunskapsbasartiklar och Support röst kolumner om du vill anpassa den här kolumnen efter dina behov. Du kan skicka dina idéer och feedback med hjälp av formuläret Fråga för den . Det finns också en länk till formuläret längst ned i den här kolumnen.

Introduktion

Välkommen till kolumnen Microsoft ASP.NET stöd röst! Jag Nilay B. Shah med supportteam för ASP.NET-utvecklare. Jag har arbetat med ASP.NET stöd för mer än ett och ett halvt år. Formulärautentisering är verkligen en cool autentisering-funktion. I den här artikeln beskrivs några problem som användarna har hittat förvirrande med formulärautentisering som förhållandet mellan autentiseringsbiljetten formulär och formulär autentiseringscookien och deras aktuella inställningar. Jag vill tacka Jerry Orman, tekniskt ansvarig för att ASP.NET-supportteamet för hans otroliga hjälp!

Personer kan ibland undrar om formulär "autentiseringsbiljetter" och "cookies" eftersom de är nära relaterade. Jag har stöter på frågor som dessa: kan någon förklara skillnaden mellan cookien förfaller och Biljetten upphör att gälla? När cookien förfaller, omdirigeras användaren till inloggningssidan. Vad händer när Biljetten upphör att gälla? Kommer det också att cookien förfaller? Vad SlidingUpdate verkligen uppdateras?

Jag kommer att inriktas på dessa två aspekter av formulärautentisering i denna artikel för att besvara följande frågor:
  • Vad är autentiseringsbiljetten formulär och formulär autentiseringscookien? Hur är de relaterade?
  • Vad är rollen för en biljett i formulärautentisering?
  • Hur relateras cookien förfaller och biljett förfallodatum?
  • Hur fungerar glidande förfallodatum arbete i samband med formulär-autentiseringsbiljetten och utgör autentiseringscookien?
  • Var kan egenskapen timeout för autentiseringscookien formulär och formulär autentiseringsbiljetten anges?
  • Problemet scenario: Formulärautentisering kan timeout innan timeout-attributvärdet som anges i konfigurationsfilen

Vad är autentiseringsbiljetten formulär och formulär autentiseringscookien? Hur är de relaterade?

Formulär Autentiseringscookien är något annat än behållare för formulär-autentiseringsbiljetten. Biljetten skickas som värde för autentiseringscookien formulär med varje begäran och formulärautentisering på servern används för att identifiera en autentiserad användare.

Men skickas vi väljer att använda formulärautentisering utan cookies biljetten i URL-Adressen i krypterat format. Utan cookies Formulärautentisering används eftersom ibland klientens webbläsare blockera cookies. Den här funktionen introducerades i Microsoft.NET Framework 2.0.

Mer information finns på följande Microsoft Developer Network (MSDN)-webbplats:

Vad är rollen för en biljett i formulärautentisering?

Autentiseringsbiljetten formulär används för att tala om vem du är ASP.NET-programmet. Biljetten är alltså byggstenen i Forms Authentication security.

Biljetten är krypterad och signerad med elementet < machineKey > konfiguration av serverns Machine.config-filen. ASP.NET 2.0 använder decryptionKey och det nya attributet dekryptering av elementet < machineKey > kryptera formulär autentiseringsbiljetter. Dekryptering -attributet kan du ange krypteringsalgoritmen som ska användas. ASP.NET 1.1 och 1.0 Använd 3DES-kryptering som kan inte konfigureras. Manipulering av biljett-värdet bestäms av en underlåtenhet att dekryptera biljett på servern. Användaren dirigeras till inloggningssidan.


Om programmet distribueras i en webbgrupp måste du kontrollera att konfigurationsfiler på varje server har samma värde för validationKey och decryptionKey attribut i taggen < machineKey > som används för hash- och dekryptering av biljetten. Du måste göra detta eftersom du inte garantera vilken server som kommer att hantera efterföljande begäranden. Mer information om kryptering av FormsAuthenticationTicket och distributionsöverväganden servergruppen för webben finns på följande MSDN-webbplats:En genomgång av metoder för att manuellt skapa nycklar finns i följande artiklar i Microsoft Knowledge Base:
312906 hur du skapar nycklar med hjälp av Visual C# .NET för formulärautentisering

313091 hur du skapar nycklar med hjälp av Visual Basic .NET för formulärautentisering

Formulär-autentiseringsbiljetter kan skapas manuellt med hjälp av klassen FormsAuthenticationTicket . Mer information finns på följande MSDN-webbplats:

Hur relateras cookien förfaller och biljett förfallodatum?

Vid icke-beständiga cookien om biljetten har upphört att gälla upphör också cookie och användaren omdirigeras till inloggningssidan. På andra sidan om biljetten är markerad beständiga, där cookien lagras på rutan klient använda webbläsare samma autentiserings-cookien för att logga in på webbplatsen varje gång. Vi kan emellertid använda FormsAuthentication.SignOut metod för att ta bort beständiga eller icke-beständiga cookies uttryckligen.

Mer information om metoden FormsAuthentication.SignOut finns på följande MSDN-webbplats:Om webbläsaren stängs utan cookies formulärautentisering biljetten går förlorade och kommer att skapas en ny biljett för sessionens nästa begäran.

Hur fungerar glidande förfallodatum arbete i samband med formulär-autentiseringsbiljetten och utgör autentiseringscookien?

Rörligt förfallodatum fungerar på exakt samma sätt!

Låt oss ta ett exempel: om inloggningssidan öppnas klockan 17:00 00:00:00: 00 det ska upphöra att gälla vid 5:10 00:00:00 PM om attributet timeout är 10 och attributet slidingExpiration har angetts till TRUE. Nu om någon webbsidan igen vid 5:05 00:00:00 PM, cookies och biljett timeout-perioden återställs till 5:15 00:00:00 PM.

Obs! Om webbsidan hämtas innan hälften av den sista tid har gått, återställs inte biljett förfallotid. Förgrundsfärg om till exempel en webbsida öppnas igen vid 5:04 00:00:00 PM, cookies och biljett timeout-perioden återställs.

Mer information finns på följande MSDN-webbplats:

Där kan timeout-värdet för autentiseringscookien formulär och formulär autentiseringsbiljetten anges?

Den inställning som du kan göra endast finns i filen Web.config eller filen Machine.config i taggen < formulär > . Bestämmer tidsgränsen för formulärautentisering i kontexten för en biljett eller cookie om biljetten genereras manuellt.

<!--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?
-->
Mer information finns på följande MSDN-webbplats:Timeout-värdet kan ställas in via attributet upphör att gälla om biljetten genereras manuellt med hjälp av klassen FormsAuthenticationTicket . Det här värdet åsidosätter timeout -attributvärdet som anges i konfigurationsfiler.

Mer information om FormsAuthenticationTicket medlemmar finns på följande MSDN-webbplats:

Problemet scenario: Formulärautentisering kan timeout innan timeout-attributvärdet som anges i konfigurationsfilen

Om autentiseringsbiljetten formulär skapas manuellt, åsidosätter egenskapen timeout för biljetten det värdet som anges i konfigurationsfilen. Om värdet är mindre än värdet i konfigurationsfilen, attribut formulären autentiseringsbiljetten upphör innan timeout konfigurationsfilen därför värdet och vice versa. Låt oss anta att attributet < formulär >timeout anges till 30 i filen Web.config och förfallodatum biljetten är värdet till 20 minuter. I det här fallet autentiseringsbiljetten formulär upphör efter 20 minuter och användaren måste logga in igen efter detta.

Relaterade länkar

910439 felsöka formulärautentisering

891032 felsökning av ASP.NET

301240 hur du implementerar formulärbaserad autentisering i ASP.NET-program med hjälp av C# .NET

308157 hur du implementerar formulärbaserad autentisering i ASP.NET-program med hjälp av Visual Basic .NET

Jag hoppas du hittat den här informationen användbar övergångar några missförstånd med ASP.NET-formulär autentiseringsbiljetten och cookie. Kom ihåg att stöd för röst-kolumner är du! Som alltid, gärna skicka idéer om ämnen som du vill använda i framtiden upp kolumner eller i Microsoft Knowledge Base med den
Be för det formulär.