Freigeben über


SessionAuthenticationModule Klasse

Definition

Implementiert ein ASP.NET-Modul, das Sitzungscookies in den 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
SessionAuthenticationModule

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;
}

Im folgenden XML-Code wird gezeigt, wie Sie das SAM in der ASP.NET-Pipeline konfigurieren. Viele andere Elemente, die in einer typischen Konfiguration vorhanden sind, werden hier aus Gründen der Kürze ausgelassen.

<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 ist, verarbeitet sam SessionAuthenticationModule Sitzungscookies in WS-Federation Szenarien. Es 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 die , die SessionSecurityTokenHandler für eine Anwendung konfiguriert ist, um das unformatierte Sitzungscookies in SessionSecurityToken -Objekten 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.

Der SAM fügt dem Ereignis in der ASP.NET-Pipeline seinen OnAuthenticateRequestHttpApplication.AuthenticateRequest Ereignishandler hinzu. Dieser Handler fängt Anmeldeanforderungen ab. Wenn ein Sitzungscookies vorhanden ist, deserialisiert es in einem Sitzungstoken und legt die Thread.CurrentPrincipal Eigenschaften und HttpContext.User auf den im Sitzungstoken enthaltenen Anspruchsprinzipal fest. Es ruft mehrere der anderen Methoden auf, die während dieses Prozesses vom SAM verfügbar gemacht werden.

Die SignOut -Methode kann aufgerufen werden, um den Benutzer von einer Sitzung abzumelden (z. B. in einer SignOut.aspx.cs CodeBehind-Datei).

Das SAM macht mehrere Ereignisse verfügbar, die Zugriff auf seine Verarbeitungspipeline ermöglichen. Mit SessionSecurityTokenReceived den Ereignissen und SessionSecurityTokenCreated können Sie Sitzungstoken ändern, die aus Cookies gelesen oder während der Verarbeitung erstellt werden. In der Regel erfolgt dies, um Ansprüche im Token hinzuzufügen, zu entfernen oder zu transformieren oder die Ablaufzeit anzupassen. Die SigningOutEreignisse , SignedOutund SignOutError stellen Hooks für die Verarbeitung von Abmeldeanforderungen bereit. In vielen Szenarien reicht das einfache Hinzufügen von Handlern für diese Ereignisse aus, häufig zur global.asax.cs-Datei.

Bei komplizierteren Szenarien können Sie von SessionAuthenticationModule ableiten, um ein benutzerdefiniertes SAM zu implementieren. Zu diesem Zweck werden viele der Methoden, die während OnAuthenticateRequest und SignOut aufgerufen werden, verfügbar gemacht, sodass 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 entweder 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

SessionAuthenticationModule()

Initialisiert eine neue Instanz der SessionAuthenticationModule-Klasse.

Eigenschaften

ContextSessionSecurityToken

Ruft das aktive SessionSecurityToken für den aktuellen HttpContext.

CookieHandler

Ruft den Cookie Handler ab, der verwendet wird, um Sitzungscookies zu lesen, zu schreiben und zu löschen.

FederationConfiguration

Ruft das FederationConfiguration-Objekt ab, das für das aktuelle Modul gilt, oder legt dieses fest.

(Geerbt von HttpModuleBase)
IsReferenceMode

Ruft einen Wert ab oder legt einen Wert fest, der angibt, ob die Sitzungsinformationen (Anspruchswerte usw.) im Sitzungscookie gespeichert werden sollen oder ob der Sitzungsinhalt auf der Serverseite über das Cookie als Referenz gespeichert werden soll.

Methoden

AuthenticateSessionSecurityToken(SessionSecurityToken, Boolean)

Authentifiziert die eingehende Anforderung durch Überprüfen des eingehenden Sitzungstokens. Nach erfolgreicher Validierung werden der aktuelle HTTP-Kontext und der Threadprinzipal mit dem angegebenen SessionSecurityTokenaktualisiert.

ContainsSessionTokenCookie(HttpCookieCollection)

Bestimmt, ob ein Sitzungscookie an der angegebenen Cookieauflistung ist.

CreateSessionSecurityToken(ClaimsPrincipal, String, DateTime, DateTime, Boolean)

Erstellt ein SessionSecurityToken aus den angegebenen Parametern mithilfe des konfigurierten Sitzungentokenhandlers.

DeleteSessionTokenCookie()

Löscht das Sitzungscookie und entfernt es aus dem Cache.

Dispose()

Gibt die von der aktuellen Instanz der HttpModuleBase-Klasse verwendeten Ressourcen (außer Speicher)frei.

(Geerbt von HttpModuleBase)
Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den 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 für die Behandlung von Ereignissen aus dem ASP.NET Anwendungsobjekt des Moduls vor.

InitializePropertiesFromConfiguration()

Initialisiert die Moduleigenschaften auf Grundlage von Definitionen in der Konfigurationsdatei.

MemberwiseClone()

Erstellt eine flache Kopie des 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 Sitzungscookie.

SetPrincipalFromSessionToken(SessionSecurityToken)

Legt den Prinzipal im HttpContext und Thread auf den Prinzipal fest, der im angegebenen Sitzungstoken enthalten ist.

SignOut()

Meldet den aktuellen Benutzer ab und löst die entsprechenden Ereignisse aus.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
TryReadSessionTokenFromCookie(SessionSecurityToken)

Versucht, ein SessionSecurityToken aus einem Sitzungscookie zu lesen und gibt einen Wert zurück, der angibt, ob das Sitzungscookie erfolgreich gelesen wurde.

ValidateSessionToken(SessionSecurityToken)

Überprüft das angegebene SessionSecurityToken und gibt seine Identität zurück.

WriteSessionTokenToCookie(SessionSecurityToken)

Schreibt das angegebene SessionSecurityToken in ein Sitzungscookie.

Ereignisse

SessionSecurityTokenCreated

Tritt ein, wenn ein Sitzungssicherheitstoken erstellt wurde.

SessionSecurityTokenReceived

Tritt ein, wenn ein Sitzungssicherheitstoken von einem Cookie gelesen wurde.

SignedOut

Tritt auf, nachdem der Benutzer abgemeldet ist.

SigningOut

Tritt vor dem Löschen der Anmeldung auf.

SignOutError

Tritt ein, wenn ein Fehler während der Abmeldung auftritt.

Gilt für: