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í.
WSFederationAuthenticationModule je modul HTTP, který slouží k zabezpečení aplikace ASP.NET vynucením nastavení federovaného ověřování u příchozích požadavků. WSFederationAuthenticationModule je hlavním modulem, který WIF nabízí mimo okno pro zpracování přístupu k identitě na základě deklarací identity v aplikacích ASP.NET.
WSFederationAuthenticationModule vyvolává několik událostí, což umožňuje vývojářům ASP.NET změnit výchozí chování a řídit podrobnosti o tom, jak probíhá ověřování a zpracování deklarací identity. Funkce WSFederationAuthenticationModule se dělí na metody specifické pro ú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ý pomocí technologie WINDOWS Identity Foundation (WIF). WsFAM se přidá do kanálu ASP.NET tak, že v souboru web.config vytvoří položku. Je odvozen z HttpModuleBase, který implementuje IHttpModule. Zaregistruje se v modulu runtime ASP.NET, aby naslouchal událostem EndRequest a AuthenticateRequest. Naslouchání události EndRequest umožňuje službě tokenů zabezpečení (STS) přesměrovat klienty WSFAM, aby získal token zabezpečení v případě selhání autorizace u požadovaného prostředku. Naslouchání události AuthenticateRequest umožňuje WSFAM monitorovat požadavky HTTP na odpověď ze služby STS, která obsahuje požadovaný token. Pokud je takový token přítomný a platný, vytvoří instanci ClaimsPrincipal pro ověřeného uživatele pomocí deklarací identity, které jsou přítomné v tokenu.
Při použití WSFAM poskytuje správa relací modul ověřování relace (SAM), což je instance třídy SessionAuthenticationModule nebo třída odvozená z ní. Sam se také přidá do kanálu ASP.NET v konfiguračním souboru. SAM monitoruje požadavky na soubory cookie ověřování (relace). Pokud jsou tyto soubory cookie přítomné a platné, modul extrahuje ClaimsPrincipal ověřeného uživatele z SessionSecurityToken a nastaví vlastnost HttpContext.User a instanční objekt vlákna Thread.CurrentPrincipal vlastnosti.
WSFAM poskytuje:
Schopnost ASP.NET aplikace předávat ověřování službě tokenů zabezpečení (STS) pomocí protokolu WS-Federation. Identita může být federovaná napříč jednou nebo více sférami identit a zahrnuje několik tokenů zabezpečení.
Identita založená na deklarací identity pro aplikace ASP.NET 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í. Tento objekt zabezpečení pak můžete použít k dalšímu autorizaci, prezentaci a rozhodnutí logiky 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 použijí 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), do které se mají odesílat žádosti o přihlášení WS-Federation 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) do služby STS.
Parametry přihlašovací zprávy je možné změnit také na základě požadavku tím, že pro událost RedirectingToIdentityProvider události poskytne delegát obslužné rutiny události.
Chování modulu řídí dvě vlastnosti. Obě tyto vlastnosti se také obvykle inicializují z elementu <wsFederation>
v konfiguraci.
Vlastnost PassiveRedirectEnabled určuje, jestli má modul provádět pasivní přesměrování na službu STS pro ověřování.
Vlastnost PersistentCookiesOnPassiveRedirects určuje, jestli mají být relace trvalé. Pokud je tato vlastnost nastavena true, SAM se používá k zápisu souboru cookie relace do klienta. Při následných požadavcích od klienta poskytuje SAM ověřování pomocí tokenu, který je trvalý v souboru cookie relace.
WSFAM vyvolá během přihlašování a odhlášení několik událostí, což umožňuje vývojářům ASP.NET změnit výchozí chování modulu a řídit podrobnosti o tom, jak probíhá ověřování a zpracování deklarací identity.
Následující události jsou vyvolány před odesláním žádosti o přihlášení WS-Federation do služby STS:
AuthorizationFailed: Vyvolá se, když je povolené pasivní přesměrování a autorizace selže u požadovaného prostředku.
RedirectingToIdentityProvider: Vyvolá se těsně před odesláním žádosti 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í přihlašovací odpovědi (vystaveného tokenu 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ávání deklarací identity do objektu zabezpečení (ClaimsPrincipal) vytvořeného z tokenu zabezpečení.
SessionSecurityTokenCreated: Vyvolán těsně před tokenem relace (SessionSecurityToken) vytvořeným z objektu deklarací identity se používá k nastavení objektu zabezpečení vlákna a aktuálního uživatele a je zapsán do souboru cookie relace. Umožňuje upravit token relace nebo povolit nebo zakázat zápis souboru cookie relace.
SignedIn: Vyvolání na konci ověřování těsně po nastavení objektu zabezpečení vlákna a aktuálního uživatele.
SignInError: Vyvolá se, pokud během přihlašování dojde k výjimce. Žádost můžete zrušit a zabránit vrácení výjimky volajícímu.
Při odhlášení 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á se těsně před odstraněním relace, abyste mohli provést vyčištění, které může záviset na relaci nebo zrušení odhlášení.
SignedOut: Vyvolán hned po odstranění relace.
SignOutError: Vyvolá se, pokud během odhlášení dojde k výjimce. Odhlášení můžete zrušit a zabránit vrácení výjimky volajícímu.
Poznámka
Události odhlášení se nevyvolají při odhlášení ve službě STS voláním metody FederatedSignOut.
Existují dva způsoby přihlášení k službě STS pomocí WSFAM. První je povolením pasivních přesměrování prostřednictvím vlastnosti PassiveRedirectEnabled. V takovém případě, když autorizace selže u požadovaného prostředku, a nevrací odpověď na 401:Access Denied
klientovi, wsFAM vytvoří ze svých vlastností zprávu o WS-Federation žádosti o přihlášení a přesměruje klienta na token zabezpečení. Druhým způsobem je explicitně přesměrovat klienta na službu STS voláním metody SignIn 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í.
Některou z přetížených SignOut metod lze použít k odhlášení z relace. Tím se odstraní soubor cookie relace v klientovi. Neodesílá do služby STS zprávu WS-Federation odhlášení (wsignout1.0). Pokud se chcete odhlásit ze služby TOKENS, musíte použít metodu FederatedSignOut.
WSFAM zpracovává WS-Federation žádosti o vyčištění odhlašování (wsignoutcleanup1.0) odstraněním relace s klientem. Pokud parametr wreply ve zprávě vyčištění odhlášení není nastavený, vrátí WSFAM obrázek zelené značky zaškrtnutí do služby STS, která zprávu odeslala. Tuto funkci může služba TOKENS 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 můžete přepsat v odvozených třídách a změnit chování WSFAM.
Abyste ho mohli použít, musí se modul přidat do kanálu jako v následujícím 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 mohou vývojáři tyto události zpracovat v souboru global.asax.
Konstruktory
WSFederationAuthenticationModule() |
Volá se konstruktory v odvozených třídách pro 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ý se projeví 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 WS-Federation žádosti o 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 trvalý soubor cookie relace vystaven při úspěšném ověření. |
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 pro použití v WS-Federation žádosti o přihlášení ("wsignin1.0"). |
SignInContext |
Získá nebo nastaví kontextovou hodnotu aplikace, která má být zahrnuta do parametru wctx v WS-Federation žádosti o přihlášení. |
SignInQueryString |
Získá nebo nastaví řetězec dotazu, který obsahuje všechny 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 všechny 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 použít během WS-Federation žádosti o odhlášení ("wsignout1.0"). |
XmlDictionaryReaderQuotas |
Získá nebo nastaví XmlDictionaryReaderQuotas objekt použít při deserializaci WS-Federation přihlašovací odpovědi na získání tokenu vystaveného službou tokenů zabezpečení (STS). |
Metody
CanReadSignInResponse(HttpRequestBase, Boolean) |
Vrátí hodnotu, která určuje, jestli zadaný požadavek HTTP je WS-Federation zpráva s odpovědí na přihlášení. Pokud se jedná o zprávu WS-Federation odhlaste zprávu vyčištění (wsignoutcleanup1.0), tato metoda požadavek zpracuje. |
CanReadSignInResponse(HttpRequestBase) |
Vrátí hodnotu, která určuje, jestli zadaný požadavek HTTP je WS-Federation zpráva s odpovědí na přihlášení. Pokud se jedná o zprávu WS-Federation odhlaste zprávu vyčištění (wsignoutcleanup1.0), tato metoda požadavek zpracuje. |
CreateSignInRequest(String, String, Boolean) |
Vytvoří zprávu WS-Federation žádosti o přihlášení pomocí parametrů WS-Federation nakonfigurovaných v modulu. |
Dispose() |
Uvolní prostředky (s výjimkou paměti) používané aktuální instancí třídy HttpModuleBase. (Zděděno od HttpModuleBase) |
Equals(Object) |
Určuje, zda je zadaný objekt roven 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 požadavek WS-Federation odhlášení adresovaný zadanému vystavitelovi a který obsahuje zadaný parametr wreply a zadané další parametry. |
GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
GetReferencedResult(String) |
Získá výsledek vystavení (obvykle vystavený token) ze zadané adresy URL. Vyřeší adresu URL zadanou v parametru wresultptr ve zprávě s odpovědí na přihlášení. |
GetReturnUrlFromResponse(HttpRequestBase) |
Extrahuje adresu URL stránky, která byla původně požadována z odpovědi pro 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 s odpovědí na přihlášení k federační službě WS Federation. |
GetSessionTokenContext() |
Získá řetězec, který by měl být trvalý s souborem cookie relace ve vlastnosti Context. |
GetSignInResponseMessage(HttpRequestBase) |
Načte objekt SignInResponseMessage z formuláře POST reprezentovaného zadaným požadavkem HTTP. |
GetSignOutRedirectUrl(SignOutCleanupRequestMessage) |
Určuje adresu URL, na kterou se má přesměrovat při zpracování požadavku na vyčištění WS-Federation odhlášení (wsignoutcleanup1.0), který obsahuje parametr wreply. |
GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
GetXmlTokenFromMessage(SignInResponseMessage, WSFederationSerializer) |
Extrahuje vystavený token ze zadané zprávy WS-Federation přihlašovací odpovědi pomocí zadaného serializátoru WS-Federation. |
GetXmlTokenFromMessage(SignInResponseMessage) |
Extrahuje vystavený token ze zadané WS-Federation přihlašovací zprávy. |
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ě konfigurace určené FederationConfiguration vlastnost modulu. |
IsSignInResponse(HttpRequestBase) |
Získá hodnotu, která označuje, zda zadaný požadavek je WS-Federation přihlašovací zpráva. |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
OnAuthenticateRequest(Object, EventArgs) |
Zpracovává AuthenticateRequest událost z kanálu ASP.NET. |
OnAuthorizationFailed(AuthorizationFailedEventArgs) |
Vyvolá událost AuthorizationFailed. |
OnEndRequest(Object, EventArgs) |
Zpracovává EndRequest událost z kanálu ASP.NET. |
OnPostAuthenticateRequest(Object, EventArgs) |
Zpracovává PostAuthenticateRequest událost z kanálu ASP.NET. |
OnRedirectingToIdentityProvider(RedirectingToIdentityProviderEventArgs) |
Vyvolá událost RedirectingToIdentityProvider. |
OnSessionSecurityTokenCreated(SessionSecurityTokenCreatedEventArgs) |
Vyvolá událost SessionSecurityTokenCreated. |
OnSignedIn(EventArgs) |
Vyvolá událost SignedIn. |
OnSignedOut(EventArgs) |
Vyvolá událost SignedOut. |
OnSignInError(ErrorEventArgs) |
Vyvolá událost SignInError. |
OnSigningOut(SigningOutEventArgs) |
Vyvolá událost SigningOut. |
OnSignOutError(ErrorEventArgs) |
Vyvolá událost SignOutError. |
RedirectToIdentityProvider(String, String, Boolean) |
Přesměruje uživatele do služby tokenů zabezpečení (STS) určené vlastností Issuer 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, Boolean) |
Odhlásí se z aktuální relace a požádá o přesměrování zpět na zadanou adresu URL. |
SignOut(String) |
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ěřuje, že vlastnosti Issuer a Realm nejsou prázdné a že pokud je vlastnost RequireHttps |
Událost
AuthorizationFailed |
Nastane, když modul určuje, jestli má uživatele přesměrovat na nakonfigurovaného vystavitele k ověření. |
RedirectingToIdentityProvider |
Nastane, když modul přesměruje uživatele na zprostředkovatele identity. |
SecurityTokenReceived |
Nastane, když byl token zabezpečení přijat ze služby tokenů zabezpečení (STS). |
SecurityTokenValidated |
Nastane po ověření tokenu zabezpečení přijatého 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 |
Nastane po přihlášení uživatele. |
SignedOut |
Nastane těsně po odstranění relace během odhlášení. |
SignInError |
Vyvolá se, když dojde k chybě při přihlášení. |
SigningOut |
Nastane před odstraněním relace během odhlášení. |
SignOutError |
Vyvolá se, když dojde k chybě při odhlášení. |