WSFederationAuthenticationModule Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
WSFederationAuthenticationModule è un modulo HTTP usato per proteggere un'applicazione ASP.NET applicando le impostazioni di autenticazione federate alle richieste in ingresso. WSFederationAuthenticationModule è il modulo principale offerto da WIF per gestire l'accesso alle identità basate sulle attestazioni nelle applicazioni ASP.NET.
WSFederationAuthenticationModule Genera diversi eventi, che consente agli sviluppatori di ASP.NET di modificare il comportamento predefinito e controllare i dettagli del modo in cui viene eseguita l'autenticazione e l'elaborazione delle attestazioni. La WSFederationAuthenticationModule funzionalità è suddivisa in metodi specifici dell'attività.
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
- Ereditarietà
Esempio
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");
}
Commenti
La WSFederationAuthenticationModule classe implementa un modulo HTTP noto come WS-Federation Authentication Module (WSFAM). WSFAM è implementato automaticamente da Windows Identity Foundation (WIF). WSFAM viene aggiunto alla pipeline di ASP.NET creando una voce nel file web.config. Deriva da HttpModuleBase, che implementa IHttpModule. Viene registrato con il runtime di ASP.NET per l'ascolto degli EndRequest eventi e AuthenticateRequest . L'ascolto dell'evento EndRequest consente al WSFAM di reindirizzare i client a un servizio token di sicurezza (STS) per ottenere un token di sicurezza quando l'autorizzazione non riesce in una risorsa richiesta. L'ascolto dell'evento AuthenticateRequest consente a WSFAM di monitorare le richieste HTTP per una risposta dal servizio token di sicurezza che contiene il token richiesto. Quando tale token è presente e valido, crea un'istanza di ClaimsPrincipal per l'utente autenticato usando le attestazioni presenti nel token.
Quando si usa WSFAM, la gestione delle sessioni viene fornita da un modulo di autenticazione sessione (SAM), che è un'istanza della SessionAuthenticationModule classe o una classe derivata da essa. Sam viene aggiunto anche alla pipeline di ASP.NET nel file di configurazione. SAM monitora le richieste di cookie di autenticazione (sessione). Quando questi cookie sono presenti e validi, il modulo estrae l'oggetto ClaimsPrincipal per l'utente autenticato da SessionSecurityToken e imposta la HttpContext.User proprietà e le proprietà dell'entità Thread.CurrentPrincipal thread.
WSFAM fornisce:
Possibilità per un'applicazione ASP.NET di esternalizzare l'autenticazione a un servizio token di sicurezza usando il protocollo WS-Federation. L'identità può essere federata in una o più aree di autenticazione dell'identità e coinvolgere più token di sicurezza.
Identità basata sulle attestazioni per le applicazioni ASP.NET. Durante l'autenticazione, WSFAM compila un'entità dalle attestazioni nel token di sicurezza inviato dal servizio token di sicurezza e imposta questa entità attestazioni come entità thread. È quindi possibile usare questa entità per prendere ulteriori decisioni relative all'autorizzazione, alla presentazione e alla logica relative all'utente rappresentato nel codice.
WSFAM espone diverse proprietà che forniscono parametri di messaggio predefiniti da usare in WS-Federation richieste di accesso e disconnessione. Queste proprietà vengono in genere inizializzate dall'elemento <wsFederation> in un file di configurazione. Le proprietà più importanti sono:
Proprietà Issuer , che specifica l'indirizzo del servizio token di sicurezza (STS) a cui inviare WS-Federation richieste di accesso e disconnessione.
Proprietà Realm che specifica il parametro wtrealm da usare nelle richieste di accesso WS-Federation. Il parametro wtrealm identifica l'area di autenticazione di sicurezza dell'applicazione relying party (RP) al servizio token di sicurezza.
I parametri del messaggio di accesso possono anche essere modificati in base alle richieste fornendo un delegato del gestore eventi per l'evento RedirectingToIdentityProvider .
Due proprietà controllano il comportamento del modulo. Entrambe queste proprietà vengono in genere inizializzate dall'elemento <wsFederation> nella configurazione.
La PassiveRedirectEnabled proprietà specifica se il modulo deve eseguire reindirizzamenti passivi al servizio token di sicurezza per l'autenticazione.
La PersistentCookiesOnPassiveRedirects proprietà specifica se le sessioni devono essere persistenti. Se questa proprietà è impostata su true, il sam viene usato per scrivere un cookie di sessione nel client. Nelle richieste successive dal client, sam fornisce l'autenticazione usando il token salvato in modo permanente nel cookie di sessione.
WSFAM genera diversi eventi durante l'accesso e la disconnessione, che consentono agli sviluppatori di ASP.NET di modificare il comportamento predefinito del modulo e controllare i dettagli del modo in cui viene eseguita l'autenticazione e l'elaborazione delle attestazioni.
Gli eventi seguenti vengono generati prima dell'invio della richiesta di accesso WS-Federation al servizio token di sicurezza:
AuthorizationFailed: generato quando il reindirizzamento passivo è abilitato e l'autorizzazione non riesce in una risorsa richiesta.
RedirectingToIdentityProvider: generato poco prima che WSFAM invii la richiesta di accesso WS-Federation al servizio token di sicurezza. È possibile usare questo evento per modificare i parametri nella richiesta di accesso.
Gli eventi seguenti vengono generati quando viene ricevuta una risposta di accesso (token di sicurezza rilasciato) dal servizio token di sicurezza:
SecurityTokenReceived: generato subito dopo che il token di sicurezza inviato dal servizio token di sicurezza viene letto dalla risposta.
SecurityTokenValidated: generato subito dopo la convalida del token. È possibile usare questo evento per filtrare, trasformare o aggiungere attestazioni all'entità attestazioni (ClaimsPrincipal) creata dal token di sicurezza.
SessionSecurityTokenCreated: generato poco prima che il token di sessione (SessionSecurityToken) creato dall'entità attestazioni venga usato per impostare l'entità thread e l'utente corrente e viene scritto nel cookie di sessione. Consente di modificare il token di sessione o abilitare o disabilitare la scrittura del cookie di sessione.
SignedIn: generato alla fine dell'autenticazione subito dopo l'impostazione dell'entità thread e dell'utente corrente.
SignInError: generato se si verifica un'eccezione durante l'accesso. È possibile annullare la richiesta e impedire che l'eccezione venga restituita al chiamante.
Quando si esce da una sessione o quando si elabora una richiesta di pulizia WS-Federation disconnessione (wsignoutcleanup1.0), vengono generati gli eventi seguenti:
SigningOut: generato poco prima dell'eliminazione della sessione per consentire di eseguire qualsiasi pulizia che potrebbe dipendere dalla sessione o annullare la disconnessa.
SignedOut: generato subito dopo l'eliminazione della sessione.
SignOutError: generato se si verifica un'eccezione durante la disconnessa. È possibile annullare la disconnessura e impedire che l'eccezione venga restituita al chiamante.
Annotazioni
Gli eventi di disconnessione non vengono generati durante la disconnessione nel servizio token di sicurezza chiamando il FederatedSignOut metodo .
Esistono due modi per accedere a un servizio token di sicurezza tramite WSFAM. Il primo consiste nell'abilitare i reindirizzamenti passivi tramite la PassiveRedirectEnabled proprietà . In questo caso, quando l'autorizzazione non riesce in una risorsa richiesta, anziché restituire una 401:Access Denied risposta al client, WSFAM compila un messaggio di richiesta di accesso WS-Federation dalle relative proprietà e reindirizza il client al servizio token di sicurezza per recuperare un token di sicurezza. Il secondo modo consiste nel reindirizzare in modo esplicito il client al servizio token di sicurezza chiamando il SignIn metodo da una pagina Web o da un controllo personalizzato nell'applicazione. Il SignIn metodo usa anche le proprietà di WSFAM per costruire la richiesta di accesso.
È possibile usare uno dei metodi di SignOut overload per disconnettersi dalla sessione. In questo modo viene eliminato il cookie di sessione nel client. Non invia un messaggio di disconnesso WS-Federation ("wsignout1.0") al servizio token di sicurezza. Per disconnettersi dal servizio token di sicurezza, è necessario usare il FederatedSignOut metodo .
WSFAM gestisce WS-Federation richieste di pulizia di disconnessione ("wsignoutcleanup1.0"), eliminando la sessione con il client. Se il parametro wreply nel messaggio di pulizia di disconnesso non è impostato, WSFAM restituisce un'immagine di un segno di spunta verde al servizio token di sicurezza che ha inviato il messaggio. Questa funzionalità può essere usata da un servizio token di sicurezza come conferma del completamento della disconneszione da parte del provider di servizi.
WSFAM espone la relativa funzionalità, ad esempio la pipeline di elaborazione delle richieste, tramite diversi metodi specifici dell'attività. È possibile eseguire l'override di questi metodi nelle classi derivate per modificare il comportamento di WSFAM.
Per essere usato, il modulo deve essere aggiunto alla pipeline come nel codice XML seguente:
<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>
Dopo la configurazione, genera eventi in varie fasi dell'elaborazione WSFederationAuthenticationModule di una richiesta HTTP. ASP.NET gli sviluppatori possono gestire questi eventi nel file global.asax.
Costruttori
| Nome | Descrizione |
|---|---|
| WSFederationAuthenticationModule() |
Chiamato dai costruttori nelle classi derivate per inizializzare la WSFederationAuthenticationModule classe . |
Proprietà
| Nome | Descrizione |
|---|---|
| AuthenticationType |
Ottiene o imposta il valore del parametro wauth da usare nelle richieste di accesso WS-Federation ("wsignin1.0"). |
| FederationConfiguration |
Ottiene o imposta l'oggetto FederationConfiguration attivo per il modulo corrente. (Ereditato da HttpModuleBase) |
| Freshness |
Ottiene o imposta il valore del parametro wfresh da utilizzare nelle richieste di accesso WS-Federation ("wsignin1.0"). |
| HomeRealm |
Ottiene o imposta il valore del parametro whr da usare nelle richieste di accesso WS-Federation ("wsignin1.0"). |
| Issuer |
Ottiene o imposta un URI che identifica l'autorità di certificazione prevista del token di sicurezza. |
| PassiveRedirectEnabled |
Ottiene o imposta un valore che specifica se il modulo è abilitato per avviare WS-Federation reindirizzamenti del protocollo. |
| PersistentCookiesOnPassiveRedirects |
Ottiene o imposta un valore che specifica se un cookie di sessione permanente viene emesso in caso di autenticazione riuscita. |
| Policy |
Ottiene o imposta il valore del parametro wp da utilizzare nelle richieste di accesso WS-Federation ("wsignin1.0"). |
| Realm |
Ottiene o imposta il valore del parametro wtrealm da utilizzare per le richieste di accesso WS-Federation ("wsignin1.0"). |
| Reply |
Ottiene o imposta il valore del parametro wreply da usare nelle richieste di accesso WS-Federation ("wsignin1.0"). |
| Request |
Ottiene o imposta il valore del parametro wreq da usare nelle richieste di accesso WS-Federation ("wsignin1.0"). |
| RequestPtr |
Ottiene o imposta il valore del parametro wreqptr da utilizzare nelle richieste di accesso WS-Federation ("wsignin1.0"). |
| RequireHttps |
Ottiene o imposta un valore che specifica se la comunicazione con il servizio token di sicurezza deve usare il protocollo HTTPS. |
| Resource |
Ottiene o imposta il valore del parametro wres da usare nelle richieste di accesso WS-Federation ("wsignin1.0"). |
| SignInContext |
Ottiene o imposta un valore di contesto specifico dell'applicazione da includere nel parametro wctx nelle richieste di accesso WS-Federation. |
| SignInQueryString |
Ottiene o imposta una stringa di query che contiene eventuali parametri aggiuntivi da inviare nelle richieste di accesso WS-Federation ("wsignin1.0"). |
| SignOutQueryString |
Ottiene o imposta una stringa di query che contiene eventuali parametri aggiuntivi da inviare in WS-Federation richieste di disconnessione ("wsignout1.0"). |
| SignOutReply |
Ottiene o imposta il valore del parametro wreply da utilizzare durante WS-Federation richieste di disconnessione ("wsignout1.0"). |
| XmlDictionaryReaderQuotas |
Ottiene o imposta l'oggetto XmlDictionaryReaderQuotas da utilizzare per deserializzare WS-Federation messaggi di risposta di accesso per ottenere il token emesso dal servizio token di sicurezza. |
Metodi
| Nome | Descrizione |
|---|---|
| CanReadSignInResponse(HttpRequestBase, Boolean) |
Restituisce un valore che indica se la richiesta HTTP specificata è un messaggio di risposta di accesso WS-Federation. Se il messaggio è un WS-Federation messaggio di pulizia della disconnessione ("wsignoutcleanup1.0"), questo metodo elabora la richiesta. |
| CanReadSignInResponse(HttpRequestBase) |
Restituisce un valore che indica se la richiesta HTTP specificata è un messaggio di risposta di accesso WS-Federation. Se il messaggio è un WS-Federation messaggio di pulizia della disconnessione ("wsignoutcleanup1.0"), questo metodo elabora la richiesta. |
| CreateSignInRequest(String, String, Boolean) |
Crea un messaggio di richiesta di accesso WS-Federation usando i parametri WS-Federation configurati nel modulo. |
| Dispose() |
Rilascia le risorse (ad eccezione della memoria) usate dall'istanza corrente della HttpModuleBase classe . (Ereditato da HttpModuleBase) |
| Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
| FederatedSignOut(Uri, Uri) |
Disconnette il servizio token di sicurezza specificato usando il protocollo di WS-Federation. |
| GetFederationPassiveSignOutUrl(String, String, String) |
Restituisce un URL che rappresenta una richiesta di disconnessione WS-Federation indirizzata all'emittente specificato e che contiene il parametro wreply specificato e i parametri aggiuntivi specificati. |
| GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetReferencedResult(String) |
Ottiene il risultato del rilascio (in genere il token emesso) dall'URL specificato. Risolve l'URL specificato nel parametro wresultptr in un messaggio di risposta di accesso. |
| GetReturnUrlFromResponse(HttpRequestBase) |
Estrae l'URL della pagina richiesta originariamente dalla risposta di accesso. |
| GetSecurityToken(HttpRequestBase) |
Legge un token di sicurezza dalla richiesta HTTP specificata. |
| GetSecurityToken(SignInResponseMessage) |
Legge un token di sicurezza dal messaggio di risposta di accesso di WS Federation specificato. |
| GetSessionTokenContext() |
Ottiene una stringa che deve essere salvata in modo permanente con il cookie di sessione nella Context proprietà . |
| GetSignInResponseMessage(HttpRequestBase) |
Legge un SignInResponseMessage oggetto dal modulo POST rappresentato dalla richiesta HTTP specificata. |
| GetSignOutRedirectUrl(SignOutCleanupRequestMessage) |
Determina l'URL a cui reindirizzare durante l'elaborazione di una richiesta di pulizia WS-Federation disconnessione (wsignoutcleanup1.0) che contiene un parametro wreply. |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| GetXmlTokenFromMessage(SignInResponseMessage, WSFederationSerializer) |
Estrae il token emesso dal messaggio di risposta di accesso specificato WS-Federation usando il serializzatore WS-Federation specificato. |
| GetXmlTokenFromMessage(SignInResponseMessage) |
Estrae il token rilasciato dal messaggio di risposta di accesso specificato WS-Federation. |
| Init(HttpApplication) |
Inizializza il modulo HTTP. (Ereditato da HttpModuleBase) |
| InitializeModule(HttpApplication) |
Inizializza il modulo e lo prepara per gestire gli eventi dall'oggetto applicazione ASP.NET del modulo. |
| InitializePropertiesFromConfiguration() |
Inizializza le proprietà del modulo in base alla configurazione specificata dalla FederationConfiguration proprietà del modulo. |
| IsSignInResponse(HttpRequestBase) |
Ottiene un valore che indica se la richiesta specificata è un messaggio di risposta di accesso WS-Federation. |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| OnAuthenticateRequest(Object, EventArgs) |
Gestisce l'evento AuthenticateRequest dalla pipeline di ASP.NET. |
| OnAuthorizationFailed(AuthorizationFailedEventArgs) |
Genera l'evento AuthorizationFailed. |
| OnEndRequest(Object, EventArgs) |
Gestisce l'evento EndRequest dalla pipeline di ASP.NET. |
| OnPostAuthenticateRequest(Object, EventArgs) |
Gestisce l'evento PostAuthenticateRequest dalla pipeline di ASP.NET. |
| OnRedirectingToIdentityProvider(RedirectingToIdentityProviderEventArgs) |
Genera l'evento RedirectingToIdentityProvider. |
| OnSessionSecurityTokenCreated(SessionSecurityTokenCreatedEventArgs) |
Genera l'evento SessionSecurityTokenCreated. |
| OnSignedIn(EventArgs) |
Genera l'evento SignedIn. |
| OnSignedOut(EventArgs) |
Genera l'evento SignedOut. |
| OnSignInError(ErrorEventArgs) |
Genera l'evento SignInError. |
| OnSigningOut(SigningOutEventArgs) |
Genera l'evento SigningOut. |
| OnSignOutError(ErrorEventArgs) |
Genera l'evento SignOutError. |
| RedirectToIdentityProvider(String, String, Boolean) |
Reindirizza l'utente al servizio token di sicurezza specificato dalla Issuer proprietà per ottenere un token di sicurezza usando il protocollo di WS-Federation. |
| SetPrincipalAndWriteSessionToken(SessionSecurityToken, Boolean) |
Imposta l'entità thread e, facoltativamente, scrive il cookie di sessione. |
| SignIn(String) |
Esegue l'accesso a un servizio token di sicurezza tramite il protocollo WS-Federation. |
| SignOut() |
Disconnettersi dalla sessione corrente e richiede un reindirizzamento all'URL specificato nella richiesta HTTP corrente. |
| SignOut(Boolean) |
Disconnettersi dalla sessione corrente e genera gli eventi appropriati. |
| SignOut(String, Boolean) |
Disconnettersi dalla sessione corrente e richiede un reindirizzamento all'URL specificato. |
| SignOut(String) |
Disconnettersi dalla sessione corrente e richiede un reindirizzamento all'URL specificato. |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
| VerifyProperties() |
Verifica che le Issuer proprietà e Realm siano non vuote e che, se la RequireHttps proprietà è |
Eventi
| Nome | Descrizione |
|---|---|
| AuthorizationFailed |
Si verifica quando il modulo determina se deve reindirizzare l'utente all'autorità emittente configurata per l'autenticazione. |
| RedirectingToIdentityProvider |
Si verifica quando il modulo reindirizza l'utente al provider di identità. |
| SecurityTokenReceived |
Si verifica quando un token di sicurezza è stato ricevuto da un servizio token di sicurezza( STS). |
| SecurityTokenValidated |
Si verifica dopo la convalida di un token di sicurezza ricevuto dal servizio token di sicurezza (STS), ma prima della creazione del token di sicurezza della sessione. |
| SessionSecurityTokenCreated |
Si verifica quando un token di sicurezza della sessione è stato creato dal token di sicurezza ricevuto da un servizio token di sicurezza. |
| SignedIn |
Si verifica dopo l'accesso dell'utente. |
| SignedOut |
Si verifica subito dopo l'eliminazione della sessione durante la disconnessa. |
| SignInError |
Generato quando si verifica un errore durante l'accesso. |
| SigningOut |
Si verifica prima di eliminare la sessione durante la disconnessa. |
| SignOutError |
Generato quando si verifica un errore durante la disconnessità. |