SessionAuthenticationModule Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Implementiert ein ASP.NET Modul, das Sitzungscookies in WS-Federation Szenarien verarbeitet.
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
- Vererbung
Beispiele
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;
}
Der folgende XML-Code zeigt, wie Sie das SAM in der ASP.NET Pipeline konfigurieren. Viele andere Elemente, die in einer typischen Konfiguration vorhanden sind, werden hier aus Platzgründen weggelassen.
<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>
Hinweise
Wenn sie in der ASP.NET Pipeline vorhanden sind, verarbeitet die SessionAuthenticationModule SAM -Sitzungscookies in WS-Federation Szenarien. Er verwendet den von der CookieHandler Eigenschaft angegebenen Cookiehandler, um das unformatierte Sitzungscookies aus der HTTP-Anforderung zu lesen und in die HTTP-Antwort zu schreiben. Es verwendet das, das SessionSecurityTokenHandler für eine Anwendung konfiguriert ist, um das unformatierte Sitzungscookies in SessionSecurityToken Objekte zu deserialisieren. Das Sitzungssicherheitstoken enthält die Ansprüche (Claim) und den Prinzipal (ClaimsPrincipal), die der Entität zugeordnet sind, für die die Anforderung bereitgestellt wird.
Das SAM fügt OnAuthenticateRequest dem Ereignis in der ASP.NET-Pipeline den HttpApplication.AuthenticateRequest Ereignishandler hinzu. Dieser Handler fängt Anmeldeanforderungen ab. Wenn ein Sitzungscookies vorhanden ist, wird er in ein Sitzungstoken deserialisiert, und die Thread.CurrentPrincipal eigenschaften werden HttpContext.User auf den im Sitzungstoken enthaltenen Anspruchsprinzipal festgelegt. Es ruft während dieses Prozesses mehrere der anderen Methoden auf, die vom SAM verfügbar gemacht werden.
Die SignOut Methode kann aufgerufen werden, um den Benutzer bei einer Sitzung abzumelden (z. B. in einer SignOut.aspx.cs CodeBehind-Datei).
Das SAM macht mehrere Ereignisse verfügbar, die Zugriff auf die Verarbeitungspipeline bieten. Mit SessionSecurityTokenReceived den Ereignissen SessionSecurityTokenCreated können Sie Sitzungstoken ändern, die von Cookies gelesen oder während der Verarbeitung erstellt werden. In der Regel erfolgt dies zum Hinzufügen, Entfernen oder Transformieren von Ansprüchen im Token oder zum Anpassen der Ablaufzeit. Die SigningOutEreignisse SignedOutund SignOutError Ereignisse stellen Hooks zur Verarbeitung von Abmeldeanforderungen bereit. Für viele Szenarien reicht das Hinzufügen von Handlern für diese Ereignisse, häufig zur global.asax.cs Datei, aus.
Für kompliziertere Szenarien können Sie von der Implementierung eines benutzerdefinierten SAM abgeleitet SessionAuthenticationModule werden. Zu diesem Zweck werden viele der Methoden, die während OnAuthenticateRequest und SignOut verfügbar gemacht werden, verfügbar gemacht, damit Sie benutzerdefiniertes Verhalten in bestimmten Phasen des Sitzungsverarbeitungslebenszyklus bereitstellen können.
Sie können das SAM der ASP.NET-Pipeline in einer Konfigurationsdatei hinzufügen, indem Sie es den HTTP-Modulen unter dem <system.webServer> Element für IIS Version 7 und höher oder unter dem <system.web> Element für Versionen vor IIS 7 hinzufügen. Der vom SAM verwendete Cookiehandler kann mit dem <CookieHandler-Element> konfiguriert werden.
Konstruktoren
| Name | Beschreibung |
|---|---|
| SessionAuthenticationModule() |
Initialisiert eine neue Instanz der SessionAuthenticationModule-Klasse. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| ContextSessionSecurityToken |
Ruft die aktive SessionSecurityToken für die aktuelle .HttpContext |
| CookieHandler |
Ruft den Cookie-Handler ab, der zum Lesen, Schreiben und Löschen von Sitzungscookies verwendet wird. |
| FederationConfiguration |
Dient zum Abrufen oder Festlegen des FederationConfiguration Objekts, das für das aktuelle Modul wirksam ist. (Geerbt von HttpModuleBase) |
| IsReferenceMode |
Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob die Sitzungsinformationen (Anspruchswerte usw.) im Sitzungscookies gespeichert werden sollen oder ob der Sitzungsinhalt auf der Serverseite gespeichert werden soll, indem das Cookie verwendet wird, um nur einen Verweis zu speichern. |
Methoden
| Name | Beschreibung |
|---|---|
| AuthenticateSessionSecurityToken(SessionSecurityToken, Boolean) |
Authentifiziert die eingehende Anforderung, indem das eingehende Sitzungstoken überprüft wird. Nach erfolgreicher Überprüfung aktualisiert sie den aktuellen HTTP-Kontext und den Threadprinzipal mit dem angegebenen SessionSecurityToken. |
| ContainsSessionTokenCookie(HttpCookieCollection) |
Bestimmt, ob ein Sitzungscookies in der angegebenen Cookiesammlung enthalten ist. |
| CreateSessionSecurityToken(ClaimsPrincipal, String, DateTime, DateTime, Boolean) |
Erstellt mithilfe des konfigurierten Sitzungstokenhandlers eine SessionSecurityToken aus den angegebenen Parametern. |
| DeleteSessionTokenCookie() |
Löscht das Sitzungscookies und entfernt es aus dem Cache. |
| Dispose() |
Gibt die Von der aktuellen Instanz der HttpModuleBase Klasse verwendeten Ressourcen (mit Ausnahme des Arbeitsspeichers) frei. (Geerbt von HttpModuleBase) |
| Equals(Object) |
Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht. (Geerbt von Object) |
| GetHashCode() |
Dient als Standardhashfunktion. (Geerbt von Object) |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| Init(HttpApplication) |
Initialisiert das HTTP-Modul. (Geerbt von HttpModuleBase) |
| InitializeModule(HttpApplication) |
Initialisiert das Modul und bereitet es vor, Ereignisse aus dem ASP.NET Anwendungsobjekt des Moduls zu behandeln. |
| InitializePropertiesFromConfiguration() |
Initialisiert die Moduleigenschaften basierend auf Definitionen in der Konfigurationsdatei. |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| OnAuthenticateRequest(Object, EventArgs) |
Behandelt das AuthenticateRequest Ereignis aus der ASP.NET Pipeline. |
| OnPostAuthenticateRequest(Object, EventArgs) |
Behandelt das PostAuthenticateRequest Ereignis aus der ASP.NET Pipeline. |
| OnSessionSecurityTokenCreated(SessionSecurityTokenCreatedEventArgs) |
Löst das SessionSecurityTokenCreated-Ereignis aus. |
| OnSessionSecurityTokenReceived(SessionSecurityTokenReceivedEventArgs) |
Löst das SessionSecurityTokenReceived-Ereignis aus. |
| OnSignedOut(EventArgs) |
Löst das SignedOut-Ereignis aus. |
| OnSigningOut(SigningOutEventArgs) |
Löst das SigningOut-Ereignis aus. |
| OnSignOutError(ErrorEventArgs) |
Löst das SignOutError-Ereignis aus. |
| ReadSessionTokenFromCookie(Byte[]) |
Liest ein SessionSecurityToken Aus dem angegebenen Sitzungscookies. |
| SetPrincipalFromSessionToken(SessionSecurityToken) |
Legt den Prinzipal für das HttpContext und Thread den Prinzipal fest, der im angegebenen Sitzungstoken enthalten ist. |
| SignOut() |
Signiert den aktuellen Benutzer aus und löst die zugehörigen Ereignisse aus. |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
| TryReadSessionTokenFromCookie(SessionSecurityToken) |
Versucht, ein SessionSecurityToken Sitzungscookies zu lesen und gibt einen Wert zurück, der angibt, ob das Sitzungscookies erfolgreich gelesen wurde. |
| ValidateSessionToken(SessionSecurityToken) |
Überprüft den angegebenen SessionSecurityToken Wert und gibt seine Identitäten zurück. |
| WriteSessionTokenToCookie(SessionSecurityToken) |
Schreibt den angegebenen SessionSecurityToken Wert in ein Sitzungscookies. |
Ereignisse
| Name | Beschreibung |
|---|---|
| SessionSecurityTokenCreated |
Tritt auf, wenn ein Sitzungssicherheitstoken erstellt wurde. |
| SessionSecurityTokenReceived |
Tritt auf, wenn ein Sitzungssicherheitstoken aus einem Cookie gelesen wurde. |
| SignedOut |
Tritt ein, nachdem der Benutzer abgemeldet wurde. |
| SigningOut |
Tritt auf, bevor die Anmeldesitzung gelöscht wird. |
| SignOutError |
Tritt auf, wenn während der Abmeldung ein Fehler auftritt. |