SessionAuthenticationModule Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Implementerar en ASP.NET modul som bearbetar sessionscookies i WS-Federation scenarier.
public ref class SessionAuthenticationModule : System::IdentityModel::Services::HttpModuleBase
public class SessionAuthenticationModule : System.IdentityModel.Services.HttpModuleBase
type SessionAuthenticationModule = class
inherit HttpModuleBase
Public Class SessionAuthenticationModule
Inherits HttpModuleBase
- Arv
Exempel
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
//SUBSCRIBE TO SAM EVENTS
FederatedAuthentication.SessionAuthenticationModule.SessionSecurityTokenCreated += new EventHandler<SessionSecurityTokenCreatedEventArgs>(SessionAuthenticationModule_SessionSecurityTokenCreated);
FederatedAuthentication.SessionAuthenticationModule.SessionSecurityTokenReceived += new EventHandler<SessionSecurityTokenReceivedEventArgs>(SessionAuthenticationModule_SessionSecurityTokenReceived);
FederatedAuthentication.SessionAuthenticationModule.SigningOut += new EventHandler<SigningOutEventArgs>(SessionAuthenticationModule_SigningOut);
FederatedAuthentication.SessionAuthenticationModule.SignedOut += new EventHandler(SessionAuthenticationModule_SignedOut);
FederatedAuthentication.SessionAuthenticationModule.SignOutError += new EventHandler<ErrorEventArgs>(SessionAuthenticationModule_SignOutError);
}
void SessionAuthenticationModule_SignOutError(object sender, ErrorEventArgs e)
{
System.Diagnostics.Trace.WriteLine("Handling SignOutError event");
}
void SessionAuthenticationModule_SignedOut(object sender, EventArgs e)
{
System.Diagnostics.Trace.WriteLine("Handling SignedOut event");
}
void SessionAuthenticationModule_SigningOut(object sender, SigningOutEventArgs e)
{
System.Diagnostics.Trace.WriteLine("Handling SigningOut event");
}
void SessionAuthenticationModule_SessionSecurityTokenReceived(object sender, SessionSecurityTokenReceivedEventArgs e)
{
System.Diagnostics.Trace.WriteLine("Handling SessionSecurityTokenReceived event");
}
void SessionAuthenticationModule_SessionSecurityTokenCreated(object sender, SessionSecurityTokenCreatedEventArgs e)
{
System.Diagnostics.Trace.WriteLine("Handling SessionSecurityTokenCreated event");
//Store session on the server-side token cache instead writing the whole token to the cookie.
//It may improve throughput but introduces server affinity that may affect scalability
FederatedAuthentication.SessionAuthenticationModule.IsReferenceMode = true;
}
Följande XML visar hur du konfigurerar SAM i ASP.NET pipeline. Många andra element som finns i en typisk konfiguration utelämnas här för korthet.
<configuration>
<system.webServer>
<modules>
<!--WIF 4.5 modules -->
<add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="WsFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</modules>
</system.webServer>
</configuration>
Kommentarer
När den finns i ASP.NET pipeline bearbetar SessionAuthenticationModule (SAM) sessionscookies i WS-Federation scenarier. Den använder cookiehanteraren som anges av CookieHandler egenskapen för att läsa den råa sessionscookien från HTTP-begäran och skriva den till HTTP-svaret. Den använder som SessionSecurityTokenHandler har konfigurerats för ett program för att deserialisera den råa sessionscookien till SessionSecurityToken objekt. Sessionssäkerhetstoken innehåller de anspråk (Claim) och huvudnamn (ClaimsPrincipal) som är associerade med den entitet som begäran hanteras för.
SAM lägger till sin händelsehanterare OnAuthenticateRequest till händelsen HttpApplication.AuthenticateRequest i ASP.NET pipeline. Den här hanteraren fångar upp inloggningsbegäranden och, om det finns en sessionscookie, deserialiserar den till en sessionstoken och anger Thread.CurrentPrincipal egenskaperna och HttpContext.User till anspråksobjektet som finns i sessionstoken. Den anropar flera av de andra metoder som exponeras av SAM under den här processen.
Metoden SignOut kan anropas för att logga ut användaren från en session (till exempel i en SignOut.aspx.cs kod bakom fil).
SAM exponerar flera händelser som ger åtkomst till dess bearbetningspipeline. Med SessionSecurityTokenReceived händelserna och SessionSecurityTokenCreated kan du ändra sessionstoken som läse från cookies eller skapas under bearbetningen. Detta görs vanligtvis för att lägga till, ta bort eller transformera anspråk i token eller för att justera dess förfallotid. Händelserna SigningOut, SignedOutoch SignOutError ger hooks i bearbetningen av utloggningsbegäranden. I många scenarier räcker det att bara lägga till hanterare för dessa händelser, ofta i filen global.asax.cs.
För mer komplicerade scenarier kan du härleda från SessionAuthenticationModule för att implementera en anpassad SAM. Därför exponeras många av de metoder som anropas under OnAuthenticateRequest och SignOut exponeras så att du kan ange anpassat beteende i specifika steg i livscykeln för sessionsbearbetning.
Du kan lägga till SAM i ASP.NET pipeline i en konfigurationsfil genom att lägga till den i HTTP-modulerna under antingen elementet <system.webServer> för IIS version 7 och senare eller under elementet <system.web> för versioner före IIS 7. Cookiehanteraren som används av SAM kan konfigureras med <cookieHandler-elementet> .
Konstruktorer
| Name | Description |
|---|---|
| SessionAuthenticationModule() |
Initierar en ny instans av SessionAuthenticationModule klassen. |
Egenskaper
| Name | Description |
|---|---|
| ContextSessionSecurityToken |
Hämtar aktivet SessionSecurityToken för den aktuella HttpContext. |
| CookieHandler |
Hämtar cookiehanteraren som används för att läsa, skriva och ta bort sessionscookies. |
| FederationConfiguration |
Hämtar eller anger det FederationConfiguration objekt som gäller för den aktuella modulen. (Ärvd från HttpModuleBase) |
| IsReferenceMode |
Hämtar eller anger ett värde som anger om sessionsinformationen (anspråksvärden osv.) ska lagras i sessionscookien eller om sessionsinnehållet ska lagras på serversidan med hjälp av cookien för att lagra bara en referens. |
Metoder
| Name | Description |
|---|---|
| AuthenticateSessionSecurityToken(SessionSecurityToken, Boolean) |
Autentiserar den inkommande begäran genom att verifiera den inkommande sessionstoken. När valideringen har slutförts uppdateras den aktuella HTTP-kontexten och trådobjektet med angivet SessionSecurityToken. |
| ContainsSessionTokenCookie(HttpCookieCollection) |
Avgör om en sessionscookie finns i den angivna cookiesamlingen. |
| CreateSessionSecurityToken(ClaimsPrincipal, String, DateTime, DateTime, Boolean) |
Skapar en SessionSecurityToken från de angivna parametrarna med hjälp av den konfigurerade sessionstokenhanteraren. |
| DeleteSessionTokenCookie() |
Tar bort sessionscookien och tar bort den från cacheminnet. |
| Dispose() |
Frigör de resurser (förutom minne) som används av den aktuella instansen HttpModuleBase av klassen. (Ärvd från HttpModuleBase) |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| Init(HttpApplication) |
Initierar HTTP-modulen. (Ärvd från HttpModuleBase) |
| InitializeModule(HttpApplication) |
Initierar modulen och förbereder den för att hantera händelser från modulens ASP.NET programobjekt. |
| InitializePropertiesFromConfiguration() |
Initierar modulegenskaperna baserat på definitioner i konfigurationsfilen. |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| OnAuthenticateRequest(Object, EventArgs) |
Hanterar händelsen AuthenticateRequest från ASP.NET pipeline. |
| OnPostAuthenticateRequest(Object, EventArgs) |
Hanterar händelsen PostAuthenticateRequest från ASP.NET pipeline. |
| OnSessionSecurityTokenCreated(SessionSecurityTokenCreatedEventArgs) |
Genererar händelsen SessionSecurityTokenCreated . |
| OnSessionSecurityTokenReceived(SessionSecurityTokenReceivedEventArgs) |
Genererar händelsen SessionSecurityTokenReceived . |
| OnSignedOut(EventArgs) |
Genererar händelsen SignedOut . |
| OnSigningOut(SigningOutEventArgs) |
Genererar händelsen SigningOut . |
| OnSignOutError(ErrorEventArgs) |
Genererar händelsen SignOutError . |
| ReadSessionTokenFromCookie(Byte[]) |
Läser en SessionSecurityToken från den angivna sessionscookien. |
| SetPrincipalFromSessionToken(SessionSecurityToken) |
Anger huvudnamnet för HttpContext och Thread till det huvudnamn som finns i den angivna sessionstoken. |
| SignOut() |
Signerar ut den aktuella användaren och genererar associerade händelser. |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |
| TryReadSessionTokenFromCookie(SessionSecurityToken) |
Försöker läsa en SessionSecurityToken från en sessionscookie och returnerar ett värde som anger om sessionscookien har lästs. |
| ValidateSessionToken(SessionSecurityToken) |
Verifierar angivna SessionSecurityToken och returnerar dess identiteter. |
| WriteSessionTokenToCookie(SessionSecurityToken) |
Skriver den angivna SessionSecurityToken till en sessionscookie. |
Händelser
| Name | Description |
|---|---|
| SessionSecurityTokenCreated |
Inträffar när en sessionssäkerhetstoken har skapats. |
| SessionSecurityTokenReceived |
Inträffar när en sessionssäkerhetstoken har lästs från en cookie. |
| SignedOut |
Inträffar när användaren har loggats ut. |
| SigningOut |
Inträffar innan inloggningssessionen tas bort. |
| SignOutError |
Inträffar när det uppstår ett fel under utloggningen. |