SessionAuthenticationModule Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Implementuje modul ASP.NET, který zpracovává soubory cookie relace ve WS-Federation scénářích.
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
- Dědičnost
Příklady
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;
}
Následující kód XML ukazuje, jak nakonfigurovat SAM v kanálu ASP.NET. Mnoho dalších prvků, které jsou přítomny v typické konfiguraci, je zde vynecháno pro stručnost.
<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>
Poznámky
Pokud se sam nachází v kanálu ASP.NET, SessionAuthenticationModule zpracovává soubory cookie relace ve WS-Federation scénářích. Používá obslužnou rutinu souboru cookie určenou CookieHandler vlastností ke čtení nezpracovaného souboru cookie relace z požadavku HTTP a jeho zápisu do odpovědi HTTP. Používá SessionSecurityTokenHandler objekt nakonfigurovaný pro aplikaci k deserializaci nezpracovaného souboru cookie relace na SessionSecurityToken objekty. Token zabezpečení relace obsahuje deklarace identity (Claim) a objekt zabezpečení (ClaimsPrincipal) přidružené k entitě, pro kterou se požadavek obsluhuje.
Sam přidá obslužnou OnAuthenticateRequest rutinu události do HttpApplication.AuthenticateRequest události v kanálu ASP.NET. Tato obslužná rutina zachytává žádosti o přihlášení, a pokud existuje soubor cookie relace, deserializuje ho do tokenu relace a nastaví Thread.CurrentPrincipal vlastnosti a HttpContext.User na objekt deklarace identity obsažený v tokenu relace. Vyvolá několik dalších metod vystavených sam během tohoto procesu.
Metodu SignOut lze vyvolat k odhlášení uživatele z relace (například v souboru SignOut.aspx.cs kódu na pozadí).
Sam zveřejňuje několik událostí, které poskytují přístup k jeho kanálu zpracování. Události SessionSecurityTokenReceived a SessionSecurityTokenCreated umožňují upravovat tokeny relace, které se čtou ze souborů cookie nebo se vytvářejí během zpracování. Obvykle se to provádí za účelem přidání, odebrání nebo transformace deklarací identity v tokenu nebo kvůli úpravě doby vypršení jeho platnosti. Události SigningOut, SignedOuta SignOutError poskytují informace o zpracování žádostí o odhlášení. V mnoha scénářích stačí pro tyto události jednoduše přidat obslužné rutiny, často do global.asax.cs souboru.
V případě složitějších scénářů můžete odvodit implementaci SessionAuthenticationModule vlastního SAM. Za tímto účelem je mnoho metod, které jsou vyvolány během OnAuthenticateRequest a SignOut jsou zpřístupněny, abyste mohli poskytnout vlastní chování v konkrétních fázích životního cyklu zpracování relace.
Sam můžete přidat do kanálu ASP.NET do konfiguračního souboru tak, že ho přidáte do modulů HTTP buď v elementu <system.webServer>
pro službu IIS verze 7 a novější, nebo v rámci elementu <system.web>
pro verze starší než IIS 7. Obslužná rutina souboru cookie používaná sam je možné nakonfigurovat pomocí elementu <cookieHandler> .
Konstruktory
SessionAuthenticationModule() |
Inicializuje novou instanci SessionAuthenticationModule třídy. |
Vlastnosti
ContextSessionSecurityToken |
Získá aktivní SessionSecurityToken pro aktuální HttpContext. |
CookieHandler |
Získá obslužnou rutinu souboru cookie, která se používá ke čtení, zápisu a odstranění souborů cookie relace. |
FederationConfiguration |
Získá nebo nastaví FederationConfiguration objekt, který je v platnosti pro aktuální modul. (Zděděno od HttpModuleBase) |
IsReferenceMode |
Získá nebo nastaví hodnotu, která určuje, zda informace o relaci (hodnoty deklarace identity atd.) mají být uloženy v souboru cookie relace nebo zda má být obsah relace uložen na straně serveru, pomocí souboru cookie k uložení pouze odkaz. |
Metody
AuthenticateSessionSecurityToken(SessionSecurityToken, Boolean) |
Ověří příchozí požadavek ověřením tokenu příchozí relace. Po úspěšném ověření aktualizuje aktuální kontext HTTP a objekt zabezpečení vlákna zadaným SessionSecurityTokenparametrem . |
ContainsSessionTokenCookie(HttpCookieCollection) |
Určuje, zda je soubor cookie relace v zadané kolekci souborů cookie. |
CreateSessionSecurityToken(ClaimsPrincipal, String, DateTime, DateTime, Boolean) |
SessionSecurityToken Vytvoří ze zadaných parametrů pomocí konfigurované obslužné rutiny tokenu relace. |
DeleteSessionTokenCookie() |
Odstraní soubor cookie relace a odebere ho z mezipaměti. |
Dispose() |
Uvolní prostředky (s výjimkou paměti) používané aktuální instancí HttpModuleBase třídy. (Zděděno od HttpModuleBase) |
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Získá aktuální Type instanci. (Zděděno od Object) |
Init(HttpApplication) |
Inicializuje modul HTTP. (Zděděno od HttpModuleBase) |
InitializeModule(HttpApplication) |
Inicializuje modul a připraví ho na zpracování událostí z ASP.NET objektu aplikace modulu. |
InitializePropertiesFromConfiguration() |
Inicializuje vlastnosti modulu na základě definic v konfiguračním souboru. |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
OnAuthenticateRequest(Object, EventArgs) |
AuthenticateRequest Zpracovává událost z kanálu ASP.NET. |
OnPostAuthenticateRequest(Object, EventArgs) |
PostAuthenticateRequest Zpracovává událost z kanálu ASP.NET. |
OnSessionSecurityTokenCreated(SessionSecurityTokenCreatedEventArgs) |
SessionSecurityTokenCreated Vyvolá událost. |
OnSessionSecurityTokenReceived(SessionSecurityTokenReceivedEventArgs) |
SessionSecurityTokenReceived Vyvolá událost. |
OnSignedOut(EventArgs) |
SignedOut Vyvolá událost. |
OnSigningOut(SigningOutEventArgs) |
SigningOut Vyvolá událost. |
OnSignOutError(ErrorEventArgs) |
SignOutError Vyvolá událost. |
ReadSessionTokenFromCookie(Byte[]) |
Načte SessionSecurityToken soubor ze zadaného souboru cookie relace. |
SetPrincipalFromSessionToken(SessionSecurityToken) |
Nastaví objekt zabezpečení na objektu HttpContext a Thread na objekt zabezpečení, který je obsažen v zadaném tokenu relace. |
SignOut() |
Odhlásí aktuálního uživatele a vyvolá přidružené události. |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
TryReadSessionTokenFromCookie(SessionSecurityToken) |
Pokusí se přečíst SessionSecurityToken soubor z souboru cookie relace a vrátí hodnotu, která označuje, jestli byl soubor cookie relace úspěšně přečtený. |
ValidateSessionToken(SessionSecurityToken) |
Ověří zadané SessionSecurityToken a vrátí jeho identity. |
WriteSessionTokenToCookie(SessionSecurityToken) |
Zapíše zadaný SessionSecurityToken soubor do souboru cookie relace. |
Událost
SessionSecurityTokenCreated |
Nastane při vytvoření tokenu zabezpečení relace. |
SessionSecurityTokenReceived |
Nastane, když se token zabezpečení relace načte ze souboru cookie. |
SignedOut |
Nastane po odhlášení uživatele. |
SigningOut |
Nastane před odstraněním přihlašovací relace. |
SignOutError |
Dochází k chybě při odhlášení. |