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 v 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řítomné v typické konfiguraci, jsou zde vynechány 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 nachází v kanálu ASP.NET, SessionAuthenticationModule zpracovává soubory cookie relace (SAM) ve WS-Federation scénářích. Používá obslužnou rutinu cookie určenou CookieHandler vlastností ke čtení nezpracovaného souboru cookie relace z požadavku HTTP a zápisu do odpovědi HTTP. Používá SessionSecurityTokenHandler nakonfigurované aplikace k deserializaci nezpracovaného souboru cookie relace na SessionSecurityToken objekty. Token zabezpečení relace obsahuje deklarace identity (Claim) a objekt zabezpečení () přidruženéClaimsPrincipal k entitě, pro kterou se požadavek obsluhuje.
SAM přidá obslužnou OnAuthenticateRequest rutinu HttpApplication.AuthenticateRequest události do události v kanálu ASP.NET. Tato obslužná rutina zachytí žádosti o přihlášení, a pokud existuje soubor cookie relace, deserializuje ho do tokenu relace a nastaví Thread.CurrentPrincipal vlastnosti HttpContext.User na objekt zabezpečení deklarací identity obsažený v tokenu relace. Vyvolá několik dalších metod vystavených SAM během tohoto procesu.
Metodu SignOut lze vyvolat, aby se uživatel odhlasil z relace (například v souboru SignOut.aspx.cs kódu).
SAM zveřejňuje několik událostí, které poskytují přístup ke svému kanálu zpracování. SessionSecurityTokenCreated Události SessionSecurityTokenReceived umožňují upravovat tokeny relace, které se čtou ze souborů cookie nebo se vytvářejí během zpracování. Obvykle se to provádí při přidávání, odebírání nebo transformaci deklarací identity v tokenu nebo úpravě doby vypršení platnosti. Události SigningOuta SignOutError události SignedOutposkytují připojení ke zpracování žádostí o odhlášení. V mnoha scénářích stačí jednoduše přidávat obslužné rutiny pro tyto události, často do souboru global.asax.cs.
V případě složitějších scénářů můžete odvodit z SessionAuthenticationModule implementace vlastního SAM. K tomuto účelu je mnoho metod, které jsou vyvolány během OnAuthenticateRequest a SignOut jsou vystaveny, takže můžete 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 v konfiguračním souboru tak, že ho přidáte do modulů <system.webServer> HTTP pod elementem služby IIS verze 7 nebo novějším nebo pod <system.web> element pro verze starší než IIS 7. Obslužnou rutinu souboru cookie používanou SAM lze nakonfigurovat s elementem <cookieHandler> .
Konstruktory
| Name | Description |
|---|---|
| SessionAuthenticationModule() |
Inicializuje novou instanci SessionAuthenticationModule třídy. |
Vlastnosti
| Name | Description |
|---|---|
| ContextSessionSecurityToken |
Získá aktivní SessionSecurityToken pro aktuální HttpContext. |
| CookieHandler |
Získá obslužnou rutinu souborů 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 relace (hodnoty deklarací atd.) by měly 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 odkazu. |
Metody
| Name | Description |
|---|---|
| AuthenticateSessionSecurityToken(SessionSecurityToken, Boolean) |
Ověřuje příchozí požadavek ověřením tokenu příchozí relace. Po úspěšném ověření aktualizuje aktuální kontext HTTP a instanční objekt vlákna se zadaným SessionSecurityTokenobjektem . |
| 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í nakonfigurované 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čuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetType() |
Získá Type aktuální instance. (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 objektu aplikace ASP.NET modulu. |
| InitializePropertiesFromConfiguration() |
Inicializuje vlastnosti modulu na základě definic v konfiguračním souboru. |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (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 ze SessionSecurityToken zadaného souboru cookie relace. |
| SetPrincipalFromSessionToken(SessionSecurityToken) |
Nastaví objekt zabezpečení na HttpContext objektu zabezpečení 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 načíst SessionSecurityToken soubor cookie relace a vrátí hodnotu, která označuje, jestli byl soubor cookie relace úspěšně přečtený. |
| ValidateSessionToken(SessionSecurityToken) |
Ověří zadanou SessionSecurityToken hodnotu a vrátí její identity. |
| WriteSessionTokenToCookie(SessionSecurityToken) |
Zapíše zadaný SessionSecurityToken soubor cookie relace. |
Událost
| Name | Description |
|---|---|
| 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 |
Nastane, když během odhlášení dojde k chybě. |