WSFederationAuthenticationModule 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í.
Je WSFederationAuthenticationModule modul HTTP, který se používá k zabezpečení aplikace ASP.NET vynucením nastavení federovaného ověřování u příchozích požadavků. Je WSFederationAuthenticationModule hlavní modul, který technologie WIF nabízí pro zpracování přístupu k identitám založeným na deklarací identity ve ASP.NET aplikacích.
Vyvolá WSFederationAuthenticationModule několik událostí, které ASP.NET vývojářům umožňují změnit výchozí chování a řídit podrobnosti o tom, jak probíhá ověřování a zpracování deklarací identity. Funkce se WSFederationAuthenticationModule dělí na metody specifické pro jednotlivé úlohy.
public ref class WSFederationAuthenticationModule : System::IdentityModel::Services::HttpModuleBase
public class WSFederationAuthenticationModule : System.IdentityModel.Services.HttpModuleBase
type WSFederationAuthenticationModule = class
inherit HttpModuleBase
Public Class WSFederationAuthenticationModule
Inherits HttpModuleBase
- Dědičnost
Příklady
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
//SUBSCRIBE TO WSFAM EVENTS
FederatedAuthentication.WSFederationAuthenticationModule.AuthorizationFailed += new EventHandler<AuthorizationFailedEventArgs>(WSFederationAuthenticationModule_AuthorizationFailed);
FederatedAuthentication.WSFederationAuthenticationModule.RedirectingToIdentityProvider += new EventHandler<RedirectingToIdentityProviderEventArgs>(WSFederationAuthenticationModule_RedirectingToIdentityProvider);
FederatedAuthentication.WSFederationAuthenticationModule.SecurityTokenReceived += new EventHandler<SecurityTokenReceivedEventArgs>(WSFederationAuthenticationModule_SecurityTokenReceived);
FederatedAuthentication.WSFederationAuthenticationModule.SecurityTokenValidated += new EventHandler<SecurityTokenValidatedEventArgs>(WSFederationAuthenticationModule_SecurityTokenValidated);
FederatedAuthentication.WSFederationAuthenticationModule.SessionSecurityTokenCreated += new EventHandler<SessionSecurityTokenCreatedEventArgs>(WSFederationAuthenticationModule_SessionSecurityTokenCreated);
FederatedAuthentication.WSFederationAuthenticationModule.SignedIn += new EventHandler(WSFederationAuthenticationModule_SignedIn);
}
void WSFederationAuthenticationModule_SignedIn(object sender, EventArgs e)
{
//Anything that's needed right after succesful session and before hitting the application code goes here
System.Diagnostics.Trace.WriteLine("Handling SignIn event");
}
void WSFederationAuthenticationModule_SessionSecurityTokenCreated(object sender, SessionSecurityTokenCreatedEventArgs e)
{
//Manipulate session token here, for example, changing its expiration value
System.Diagnostics.Trace.WriteLine("Handling SessionSecurityTokenCreated event");
System.Diagnostics.Trace.WriteLine("Key valid from: " + e.SessionToken.KeyEffectiveTime);
System.Diagnostics.Trace.WriteLine("Key expires on: " + e.SessionToken.KeyExpirationTime);
}
void WSFederationAuthenticationModule_SecurityTokenValidated(object sender, SecurityTokenValidatedEventArgs e)
{
//All vlidation SecurityTokenHandler checks are successful
System.Diagnostics.Trace.WriteLine("Handling SecurityTokenValidated event");
}
void WSFederationAuthenticationModule_SecurityTokenReceived(object sender, SecurityTokenReceivedEventArgs e)
{
//Augment token validation with your cusotm validation checks without invalidating the token.
System.Diagnostics.Trace.WriteLine("Handling SecurityTokenReceived event");
}
void WSFederationAuthenticationModule_AuthorizationFailed(object sender, AuthorizationFailedEventArgs e)
{
//Use this event to report more details regarding the ahorization failure
System.Diagnostics.Trace.WriteLine("Handling AuthorizationFailed event");
}
void WSFederationAuthenticationModule_RedirectingToIdentityProvider(object sender, RedirectingToIdentityProviderEventArgs e)
{
//Use this event to programmatically modify the sign-in message to the STS.
System.Diagnostics.Trace.WriteLine("Handling RedirectingToIdentityProvider event");
}
Poznámky
Třída WSFederationAuthenticationModule implementuje modul HTTP označovaný jako WS-Federation Authentication Module (WSFAM). WSFAM je implementovaný automaticky pomocí technologie Windows Identity Foundation (WIF). WSFAM se přidá do kanálu ASP.NET tak, že v souboru web.config vytvoří záznam. Je odvozen od HttpModuleBase, který implementuje IHttpModule. Zaregistruje se v modulu runtime ASP.NET, aby naslouchal událostem EndRequest a AuthenticateRequest . EndRequest Naslouchání události umožňuje službě WSFAM přesměrovat klienty do služby tokenů zabezpečení (STS), aby získali token zabezpečení v případě selhání autorizace požadovaného prostředku. AuthenticateRequest Naslouchání události umožňuje WSFAM monitorovat požadavky HTTP na odpověď ze služby STS, která obsahuje požadovaný token. Pokud je takový token přítomen a platný, vytvoří ClaimsPrincipal instanci pro ověřeného uživatele pomocí deklarací identity, které jsou v tokenu.
Při použití WSFAM je správa relací poskytována modulem ověřování relací (SAM), což je instance SessionAuthenticationModule třídy nebo z ní odvozená třída. Sam se také přidá do kanálu ASP.NET v konfiguračním souboru. SAM monitoruje žádosti o ověřovací soubory cookie (soubory cookie relace). Pokud jsou tyto soubory cookie k dispozici a jsou platné, modul extrahuje ClaimsPrincipal pro ověřeného uživatele z SessionSecurityToken a nastaví HttpContext.User vlastnost a vlastnosti objektu zabezpečení Thread.CurrentPrincipal vlákna.
WSFAM poskytuje:
Možnost aplikace ASP.NET k externímu ověření službě tokenů zabezpečení (STS) pomocí protokolu WS-Federation. Identita může být federovaná v jedné nebo několika sférách identit a zahrnuje několik tokenů zabezpečení.
Identita založená na deklarací identity pro ASP.NET aplikace. Během ověřování WSFAM sestaví objekt zabezpečení z deklarací identity v tokenu zabezpečení odeslaném službou STS a nastaví tento objekt deklarací identity jako objekt zabezpečení vlákna. Tento objekt zabezpečení pak můžete použít k dalšímu autorizačnímu, prezentačnímu a logickému rozhodování o uživateli, který představuje ve vašem kódu.
WSFAM zveřejňuje několik vlastností, které poskytují výchozí parametry zprávy, které se mají použít při WS-Federation žádosti o přihlášení a odhlášení. Tyto vlastnosti se obvykle inicializují z elementu <wsFederation> v konfiguračním souboru. Nejdůležitější z těchto vlastností jsou:
Vlastnost Issuer , která určuje adresu služby tokenů zabezpečení (STS), na kterou se mají odesílat WS-Federation žádosti o přihlášení a odhlášení.
Vlastnost Realm , která určuje parametr wtrealm, který se má použít v WS-Federation žádosti o přihlášení. Parametr wtrealm identifikuje sféru zabezpečení aplikace předávající strany (RP) pro službu TOKENS.
Parametry zprávy o přihlášení je také možné změnit na základě jednotlivých požadavků poskytnutím delegáta obslužné rutiny události pro RedirectingToIdentityProvider událost.
Chování modulu řídí dvě vlastnosti. Obě tyto vlastnosti jsou také obvykle inicializovány z elementu <wsFederation>
v konfiguraci.
Vlastnost PassiveRedirectEnabled určuje, jestli má modul provádět pasivní přesměrování na službu tokenů zabezpečení k ověření.
Vlastnost PersistentCookiesOnPassiveRedirects určuje, jestli mají být relace trvalé. Pokud je tato vlastnost nastavena na true, sam se použije k zápisu souboru cookie relace do klienta. Při následných požadavcích od klienta sam zajišťuje ověřování pomocí tokenu, který je trvalý v souboru cookie relace.
WSFAM vyvolá během přihlašování a odhlašování několik událostí, které ASP.NET vývojářům umožňují změnit výchozí chování modulu a řídit podrobnosti o tom, jak probíhá ověřování a zpracování deklarací identity.
Před odesláním žádosti o přihlášení WS-Federation službě STS se vyvolá následující události:
AuthorizationFailed: Vyvolá se, když je povolené pasivní přesměrování a autorizace požadovaného prostředku selže.
RedirectingToIdentityProvider: Vyvolána těsně před tím, než WSFAM odešle žádost o přihlášení WS-Federation službě STS. Tuto událost můžete použít ke změně parametrů v žádosti o přihlášení.
Při přijetí odpovědi na přihlášení (vystavený token zabezpečení) ze služby STS se vyvolá následující události:
SecurityTokenReceived: Vyvoláno hned po načtení tokenu zabezpečení odeslaného službou STS z odpovědi.
SecurityTokenValidated: Vyvolá se hned po ověření tokenu. Tuto událost můžete použít k filtrování, transformaci nebo přidání deklarací identity do objektu deklarací identity (ClaimsPrincipal) vytvořeného z tokenu zabezpečení.
SessionSecurityTokenCreated: Vyvolá se těsně před tokenem relace (SessionSecurityToken) vytvořeným z objektu zabezpečení deklarací identity se použije k nastavení objektu zabezpečení vlákna a aktuálního uživatele a zapíše se do souboru cookie relace. Umožňuje změnit token relace nebo povolit nebo zakázat zápis souboru cookie relace.
SignedIn: Vyvolána na konci ověřování hned po nastavení objektu zabezpečení vlákna a aktuálního uživatele.
SignInError: Vyvolána, pokud během přihlašování dojde k výjimce. Požadavek můžete zrušit a zabránit vrácení výjimky volajícímu.
Při odhlašování z relace nebo při zpracování žádosti o vyčištění WS-Federation odhlášení (wsignoutcleanup1.0) jsou vyvolány následující události:
SigningOut: Vyvolána těsně před odstraněním relace, aby bylo možné provést jakékoli čištění, které může záviset na relaci, nebo zrušit odhlášení.
SignedOut: Vyvolána těsně po odstranění relace.
SignOutError: Vyvolána, pokud během odhlašování dojde k výjimce. Můžete zrušit odhlášení a zabránit vrácení výjimky volajícímu.
Poznámka
Události odhlášení nejsou vyvolány při odhlášení na sts voláním FederatedSignOut metody .
Existují dva způsoby přihlášení ke službě STS pomocí WSFAM. První je povolením pasivního přesměrování prostřednictvím PassiveRedirectEnabled vlastnosti . V takovém případě WSFAM v případě, že autorizace u požadovaného prostředku selže, nevrací 401:Access Denied
odpověď klientovi, sestaví ze svých vlastností zprávu o žádosti o přihlášení WS-Federation a přesměruje klienta na službu STS, aby načetla token zabezpečení. Druhým způsobem je explicitně přesměrovat klienta na službu STS voláním SignIn metody z webové stránky nebo vlastního ovládacího prvku ve vaší aplikaci. Metoda SignIn také používá vlastnosti WSFAM k vytvoření žádosti o přihlášení.
K odhlášení z relace lze použít libovolnou z přetížených SignOut metod. Tím se odstraní soubor cookie relace na klientovi. Neodesílá WS-Federation zprávu o odhlášení (wsignout1.0) službě STS. Pokud se chcete odhlásit ze služby STS, musíte použít metodu FederatedSignOut .
WSFAM zpracovává WS-Federation žádosti o vymazání odhlášení (wsignoutcleanup1.0) odstraněním své relace s klientem. Pokud parametr wreply ve zprávě o vyčištění odhlášení není nastaven, WSFAM vrátí obrázek zelené značky zaškrtnutí tokenu služby TOKEN, která zprávu odeslala. Tuto funkci může služba tokenů tokenů tokenů použít jako potvrzení, že poskytovatel prostředků dokončil odhlášení.
WSFAM zveřejňuje své funkce – například kanál zpracování požadavků – prostřednictvím několika metod specifických pro úlohy. Tyto metody lze přepsat v odvozených třídách změnit chování WSFAM.
Pokud chcete modul použít, musíte ho přidat do kanálu jako v následujícím kódu XML:
<configuration>
<system.webServer>
<modules>
<add name="WsFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</modules>
</system.webServer>
</configuration>
Po nakonfigurování WSFederationAuthenticationModule vyvolá události v různých fázích zpracování požadavku HTTP. ASP.NET vývojáři můžou tyto události zpracovat v souboru global.asax.
Konstruktory
WSFederationAuthenticationModule() |
Volána konstruktory v odvozených třídách k inicializaci WSFederationAuthenticationModule třídy. |
Vlastnosti
AuthenticationType |
Získá nebo nastaví hodnotu parametru wauth pro použití v WS-Federation žádosti o přihlášení ("wsignin1.0"). |
FederationConfiguration |
Získá nebo nastaví FederationConfiguration objekt, který je v platnosti pro aktuální modul. (Zděděno od HttpModuleBase) |
Freshness |
Získá nebo nastaví hodnotu parametru wfresh pro použití v WS-Federation žádosti o přihlášení ("wsignin1.0"). |
HomeRealm |
Získá nebo nastaví hodnotu parametru whr pro použití v požadavcích WS-Federation přihlášení ("wsignin1.0"). |
Issuer |
Získá nebo nastaví identifikátor URI, který identifikuje zamýšleného vystavitele tokenu zabezpečení. |
PassiveRedirectEnabled |
Získá nebo nastaví hodnotu, která určuje, zda modul je povoleno inicializovat WS-Federation přesměrování protokolu. |
PersistentCookiesOnPassiveRedirects |
Získá nebo nastaví hodnotu, která určuje, zda je při úspěšném ověření vydán soubor cookie trvalé relace. |
Policy |
Získá nebo nastaví hodnotu parametru wp, který se má použít v WS-Federation žádosti o přihlášení ("wsignin1.0"). |
Realm |
Získá nebo nastaví hodnotu parametru wtrealm, který se má použít pro WS-Federation žádosti o přihlášení ("wsignin1.0"). |
Reply |
Získá nebo nastaví hodnotu parametru wreply pro použití v WS-Federation žádosti o přihlášení ("wsignin1.0"). |
Request |
Získá nebo nastaví hodnotu parametru wreq pro použití v WS-Federation žádosti o přihlášení ("wsignin1.0"). |
RequestPtr |
Získá nebo nastaví hodnotu parametru wreqptr pro použití v WS-Federation žádosti o přihlášení ("wsignin1.0"). |
RequireHttps |
Získá nebo nastaví hodnotu, která určuje, zda komunikace se službou tokenů zabezpečení (STS) musí používat protokol HTTPS. |
Resource |
Získá nebo nastaví hodnotu parametru wres, který se má použít v požadavcích WS-Federation přihlášení ("wsignin1.0"). |
SignInContext |
Získá nebo nastaví kontextovou hodnotu aplikace, která má být zahrnuta v parametru wctx v WS-Federation žádosti o přihlášení. |
SignInQueryString |
Získá nebo nastaví řetězec dotazu, který obsahuje další parametry, které mají být odeslány v WS-Federation žádosti o přihlášení ("wsignin1.0"). |
SignOutQueryString |
Získá nebo nastaví řetězec dotazu, který obsahuje další parametry, které mají být odeslány v WS-Federation žádosti o odhlášení ("wsignout1.0"). |
SignOutReply |
Získá nebo nastaví hodnotu parametru wreply, který se má použít během WS-Federation požadavků na odhlášení ("wsignout1.0"). |
XmlDictionaryReaderQuotas |
Získá nebo nastaví XmlDictionaryReaderQuotas objekt, který se má použít při deserializaci WS-Federation zprávy odpovědi na přihlášení k získání tokenu vydaného službou tokenů zabezpečení (STS). |
Metody
CanReadSignInResponse(HttpRequestBase) |
Vrátí hodnotu, která označuje, jestli je zadaný požadavek HTTP WS-Federation zpráva s odpovědí na přihlášení. Pokud se jedná o WS-Federation zprávu o vyčištění odhlášení (wsignoutcleanup1.0), tato metoda požadavek zpracuje. |
CanReadSignInResponse(HttpRequestBase, Boolean) |
Vrátí hodnotu, která označuje, jestli je zadaný požadavek HTTP WS-Federation zpráva s odpovědí na přihlášení. Pokud se jedná o WS-Federation zprávu o vyčištění odhlášení (wsignoutcleanup1.0), tato metoda požadavek zpracuje. |
CreateSignInRequest(String, String, Boolean) |
Vytvoří zprávu o WS-Federation žádosti o přihlášení pomocí parametrů WS-Federation nakonfigurovaných v modulu. |
Dispose() |
Uvolní prostředky (kromě 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) |
FederatedSignOut(Uri, Uri) |
Odhlásí se k zadané službě tokenů zabezpečení (STS) pomocí protokolu WS-Federation. |
GetFederationPassiveSignOutUrl(String, String, String) |
Vrátí adresu URL, která představuje WS-Federation požadavek na odhlášení adresovaný určenému vystaviteli a který obsahuje zadaný parametr wreply a zadané další parametry. |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetReferencedResult(String) |
Získá výsledek vystavení (obvykle vydaný token) ze zadané adresy URL. Přeloží adresu URL zadanou v parametru wresultptr ve zprávě odpovědi na přihlášení. |
GetReturnUrlFromResponse(HttpRequestBase) |
Extrahuje adresu URL stránky, která byla původně požadována z odpovědi na přihlášení. |
GetSecurityToken(HttpRequestBase) |
Načte token zabezpečení ze zadaného požadavku HTTP. |
GetSecurityToken(SignInResponseMessage) |
Načte token zabezpečení ze zadané zprávy odpovědi na přihlášení ws Federation. |
GetSessionTokenContext() |
Získá řetězec, který by měl být trvalý s session cookie ve Context vlastnosti. |
GetSignInResponseMessage(HttpRequestBase) |
Načte SignInResponseMessage objekt z formuláře POST reprezentovaný zadaným požadavkem HTTP. |
GetSignOutRedirectUrl(SignOutCleanupRequestMessage) |
Určuje adresu URL, na kterou se má provést přesměrování při zpracování požadavku na vyčištění WS-Federation odhlášení (wsignoutcleanup1.0), který obsahuje parametr wreply. |
GetType() |
Type Získá z aktuální instance. (Zděděno od Object) |
GetXmlTokenFromMessage(SignInResponseMessage) |
Extrahuje vydaný token ze zadané WS-Federation zprávě odpovědi na přihlášení. |
GetXmlTokenFromMessage(SignInResponseMessage, WSFederationSerializer) |
Extrahuje vydaný token ze zprávy odpovědi na přihlášení zadaného WS-Federation pomocí zadaného serializátoru WS-Federation. |
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ě konfigurace určené FederationConfiguration vlastností modulu. |
IsSignInResponse(HttpRequestBase) |
Získá hodnotu, která označuje, zda je zadaný požadavek WS-Federation přihlašovací zpráva. |
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. |
OnAuthorizationFailed(AuthorizationFailedEventArgs) |
AuthorizationFailed Vyvolá událost. |
OnEndRequest(Object, EventArgs) |
EndRequest Zpracovává událost z kanálu ASP.NET. |
OnPostAuthenticateRequest(Object, EventArgs) |
PostAuthenticateRequest Zpracovává událost z kanálu ASP.NET. |
OnRedirectingToIdentityProvider(RedirectingToIdentityProviderEventArgs) |
RedirectingToIdentityProvider Vyvolá událost. |
OnSessionSecurityTokenCreated(SessionSecurityTokenCreatedEventArgs) |
SessionSecurityTokenCreated Vyvolá událost. |
OnSignedIn(EventArgs) |
SignedIn Vyvolá událost. |
OnSignedOut(EventArgs) |
SignedOut Vyvolá událost. |
OnSignInError(ErrorEventArgs) |
SignInError Vyvolá událost. |
OnSigningOut(SigningOutEventArgs) |
SigningOut Vyvolá událost. |
OnSignOutError(ErrorEventArgs) |
SignOutError Vyvolá událost. |
RedirectToIdentityProvider(String, String, Boolean) |
Přesměruje uživatele na službu tokenů zabezpečení (STS) určenou Issuer vlastností k získání tokenu zabezpečení pomocí protokolu WS-Federation. |
SetPrincipalAndWriteSessionToken(SessionSecurityToken, Boolean) |
Nastaví objekt zabezpečení vlákna a volitelně zapíše soubor cookie relace. |
SignIn(String) |
Provádí přihlášení ke službě tokenů zabezpečení (STS) prostřednictvím protokolu WS-Federation. |
SignOut() |
Odhlásí se z aktuální relace a požádá o přesměrování zpět na adresu URL zadanou v aktuálním požadavku HTTP. |
SignOut(Boolean) |
Odhlásí se z aktuální relace a vyvolá příslušné události. |
SignOut(String) |
Odhlásí se z aktuální relace a požádá o přesměrování zpět na zadanou adresu URL. |
SignOut(String, Boolean) |
Odhlásí se z aktuální relace a požádá o přesměrování zpět na zadanou adresu URL. |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
VerifyProperties() |
Ověří, že Issuer vlastnosti a Realm nejsou prázdné, a pokud RequireHttps je |
Událost
AuthorizationFailed |
Vyvolá se, když modul určuje, zda má přesměrovat uživatele na nakonfigurovaného vystavitele k ověření. |
RedirectingToIdentityProvider |
Vyvolá se, když se modul chystá přesměrovat uživatele na zprostředkovatele identity. |
SecurityTokenReceived |
Vyvolá se při přijetí tokenu zabezpečení ze služby tokenů zabezpečení (STS). |
SecurityTokenValidated |
Vyvolá se po ověření tokenu zabezpečení, který byl přijat ze služby tokenů zabezpečení (STS), ale před vytvořením tokenu zabezpečení relace. |
SessionSecurityTokenCreated |
Nastane, když byl token zabezpečení relace vytvořen z tokenu zabezpečení přijatého ze služby tokenů zabezpečení (STS). |
SignedIn |
Vyvolá se po přihlášení uživatele. |
SignedOut |
Vyvolá se těsně po odstranění relace během odhlášení. |
SignInError |
Vyvolá se, když dojde k chybě během přihlašování. |
SigningOut |
Vyvolá se před odstraněním relace během odhlášení. |
SignOutError |
Vyvolá se, když během odhlášení dojde k chybě. |