WSFederationAuthenticationModule Classe

Définition

Il WSFederationAuthenticationModule s’agit d’un module HTTP utilisé pour sécuriser une application ASP.NET en appliquant les paramètres d’authentification fédérée aux requêtes entrantes. WSFederationAuthenticationModule est le module principal prêt à l’emploi proposé par WIF pour gérer l’accès aux identités basées sur les revendications dans les applications ASP.NET.

WSFederationAuthenticationModule déclenche plusieurs événements, ce qui permet aux développeurs ASP.NET de modifier le comportement par défaut et de contrôler les détails relatifs à l'authentification et au traitement des revendications. La fonctionnalité WSFederationAuthenticationModule est divisée en méthodes spécifiques aux tâches.

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
Héritage
WSFederationAuthenticationModule

Exemples


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");
}

Remarques

La WSFederationAuthenticationModule classe implémente un module HTTP appelé module d’authentification WS-Federation (WSFAM). WSFAM est implémenté par Windows Identity Foundation (WIF). WSFAM est ajouté au pipeline ASP.NET en créant une entrée dans le fichier web.config. Il dérive de HttpModuleBase, qui implémente IHttpModule. Il s’inscrit auprès du runtime ASP.NET pour écouter les EndRequest événements et AuthenticateRequest . À l’écoute de l’événement EndRequest , WSFAM redirige les clients vers un service de jeton de sécurité (STS) pour obtenir un jeton de sécurité en cas d’échec de l’autorisation sur une ressource demandée. L’écoute de l’événement AuthenticateRequest permet au WSFAM de surveiller les requêtes HTTP pour obtenir une réponse du STS qui contient le jeton demandé. Lorsqu’un tel jeton est présent et valide, il crée une instance de ClaimsPrincipal pour l’utilisateur authentifié à l’aide des revendications présentes dans le jeton.

Lors de l’utilisation de WSFAM, la gestion de session est assurée par un module d’authentification de session (SAM), qui est un instance de la SessionAuthenticationModule classe, ou une classe dérivée de celle-ci. Le sam est également ajouté au pipeline ASP.NET dans le fichier de configuration. Le SAM surveille les demandes de cookies d’authentification (session). Lorsque ces cookies sont présents et valides, le module extrait le ClaimsPrincipal pour l’utilisateur authentifié du SessionSecurityToken et définit la HttpContext.User propriété et les propriétés du principal Thread.CurrentPrincipal de thread.

WSFAM fournit les éléments suivants :

  • La possibilité pour une application ASP.NET d’externaliser l’authentification à un service de jeton de sécurité (STS) à l’aide du protocole WS-Federation. L’identité peut être fédérée entre un ou plusieurs domaines d’identité et impliquer plusieurs STS.

  • Identité basée sur les revendications pour les applications ASP.NET. Pendant l’authentification, WSFAM génère un principal à partir des revendications dans le jeton de sécurité envoyé par le STS et définit ce principal de revendications comme principal de thread. Vous pouvez ensuite utiliser ce principal pour prendre d’autres décisions d’autorisation, de présentation et de logique concernant l’utilisateur qu’il représente dans votre code.

WSFAM expose plusieurs propriétés qui fournissent des paramètres de message par défaut à utiliser sur WS-Federation demandes de connexion et de déconnexion. Ces propriétés sont généralement initialisées à partir de l’élément <wsFederation> dans un fichier de configuration. Les propriétés les plus importantes sont les suivantes :

  • Propriété Issuer , qui spécifie l’adresse du service sts (Security Token Service) auquel envoyer WS-Federation demandes de connexion et de déconnexion.

  • Propriété Realm , qui spécifie le paramètre wtrealm à utiliser dans WS-Federation demandes de connexion. Le paramètre wtrealm identifie le domaine de sécurité de l’application de partie de confiance (RP) sur le STS.

Les paramètres de message de connexion peuvent également être modifiés par demande en fournissant un délégué de gestionnaire d’événements pour l’événement RedirectingToIdentityProvider .

Deux propriétés contrôlent le comportement du module. Ces deux propriétés sont généralement initialisées à partir de l’élément dans la <wsFederation> configuration.

  • La PassiveRedirectEnabled propriété spécifie si le module doit effectuer des redirections passives vers le STS pour l’authentification.

  • La PersistentCookiesOnPassiveRedirects propriété spécifie si les sessions doivent être persistantes. Si cette propriété a la valeur true, sam est utilisé pour écrire un cookie de session sur le client. Sur les demandes suivantes du client, sam fournit l’authentification à l’aide du jeton conservé dans le cookie de session.

Le WSFAM déclenche plusieurs événements lors de la connexion et de la déconnexion, ce qui permet aux développeurs ASP.NET de modifier le comportement par défaut du module et de contrôler les détails du traitement de l’authentification et des revendications.

Les événements suivants sont déclenchés avant que la demande de connexion WS-Federation soit envoyée au STS :

  • AuthorizationFailed: déclenché lorsque la redirection passive est activée et que l’autorisation échoue sur une ressource demandée.

  • RedirectingToIdentityProvider: déclenché juste avant que WSFAM n’envoie le WS-Federation demande de connexion au STS. Vous pouvez utiliser cet événement pour modifier les paramètres de la demande de connexion.

Les événements suivants sont déclenchés lorsqu’une réponse de connexion (jeton de sécurité émis) est reçue du STS :

  • SecurityTokenReceived: déclenché juste après la lecture du jeton de sécurité envoyé par le STS à partir de la réponse.

  • SecurityTokenValidated: déclenché juste après la validation du jeton. Vous pouvez utiliser cet événement pour filtrer, transformer ou ajouter des revendications au principal de revendications (ClaimsPrincipal) créé à partir du jeton de sécurité.

  • SessionSecurityTokenCreated: déclenché juste avant que le jeton de session (SessionSecurityToken) créé à partir du principal de revendications soit utilisé pour définir le principal de thread et l’utilisateur actuel et soit écrit dans le cookie de session. Vous donne la possibilité de modifier le jeton de session ou d’activer ou de désactiver l’écriture du cookie de session.

  • SignedIn: déclenché à la fin de l’authentification juste après la définition du principal du thread et de l’utilisateur actuel.

  • SignInError: déclenché si une exception se produit pendant la connexion. Vous pouvez annuler la demande et empêcher le retour de l’exception à l’appelant.

Lors de la déconnexion d’une session ou lors du traitement d’une WS-Federation déconnexion propre demande (wsignoutcleanup1.0), les événements suivants sont déclenchés :

  • SigningOut: déclenché juste avant la suppression de la session pour vous permettre d’effectuer un nettoyage qui peut dépendre de la session ou d’annuler la déconnexion.

  • SignedOut: déclenché juste après la suppression de la session.

  • SignOutError: déclenché si une exception se produit pendant la déconnexion. Vous pouvez annuler la déconnexion et empêcher le retour de l’exception à l’appelant.

Notes

Les événements de déconnexion ne sont pas déclenchés lors de la déconnexion au sts en appelant la FederatedSignOut méthode .

Il existe deux façons de se connecter à un STS à l’aide de WSFAM. La première consiste à activer les redirections passives via la PassiveRedirectEnabled propriété . Dans ce cas, lorsque l’autorisation échoue sur une ressource demandée, plutôt que de renvoyer une 401:Access Denied réponse au client, WSFAM génère un message de demande de connexion WS-Federation à partir de ses propriétés et redirige le client vers le STS pour récupérer un jeton de sécurité. La deuxième méthode consiste à rediriger explicitement le client vers le STS en appelant la SignIn méthode à partir d’une page web ou d’un contrôle personnalisé dans votre application. La SignIn méthode utilise également les propriétés de WSFAM pour construire la demande de connexion.

Toutes les méthodes surchargées SignOut peuvent être utilisées pour se déconnecter de la session. Cela supprime le cookie de session sur le client. Il n’envoie pas de message de déconnexion WS-Federation (« wsignout1.0 ») au STS. Pour vous déconnecter sur le STS, vous devez utiliser la FederatedSignOut méthode .

WSFAM gère WS-Federation propre demandes de déconnexion (« wsignoutcleanup1.0 ») en supprimant sa session avec le client. Si le paramètre wreply dans le message de déconnexion propre n’est pas défini, le WSFAM retourne une image d’une marque case activée verte au STS qui a envoyé le message. Cette fonctionnalité peut être utilisée par un STS en tant qu’accusé de réception que le fournisseur de ressources a terminé sa déconnexion.

WSFAM expose ses fonctionnalités(par exemple, son pipeline de traitement des demandes) via plusieurs méthodes spécifiques à une tâche. Vous pouvez remplacer ces méthodes dans des classes dérivées pour modifier le comportement du WSFAM.

Pour être utilisé, le module doit être ajouté au pipeline comme dans le code XML suivant :

<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>

Une fois configuré, le WSFederationAuthenticationModule déclenche des événements à différentes étapes du traitement d’une requête HTTP. ASP.NET développeurs peuvent gérer ces événements dans le fichier global.asax.

Constructeurs

WSFederationAuthenticationModule()

Appelé par les constructeurs dans les classes dérivées pour initialiser la classe WSFederationAuthenticationModule.

Propriétés

AuthenticationType

Obtient ou définit la valeur du paramètre wauth à utiliser dans les demandes de connexion WS-Federation ("wsignin1.0").

FederationConfiguration

Obtient ou définit l'objet FederationConfiguration appliqué pour le module actuel.

(Hérité de HttpModuleBase)
Freshness

Obtient ou définit la valeur du paramètre wfresh à utiliser dans les demandes de connexion WS-Federation ("wsignin1.0").

HomeRealm

Obtient ou définit la valeur du paramètre whr à utiliser dans les demandes de connexion WS-Federation ("wsignin1.0").

Issuer

Obtient ou définit l'URI qui identifie l'émetteur attendu du jeton de sécurité.

PassiveRedirectEnabled

Obtient ou définit une valeur qui spécifie si le module est activé pour initialiser la redirection du protocole WS-Federation.

PersistentCookiesOnPassiveRedirects

Obtient ou définit une valeur qui spécifie si un cookie de session persistante est publiée lors de l'authentification réussie.

Policy

Obtient ou définit la valeur du paramètre wp à utiliser dans les demandes de connexion WS-Federation ("wsignin1.0").

Realm

Obtient ou définit la valeur du paramètre wtrealm à utiliser pour les demandes de connexion WS-Federation ("wsignin1.0").

Reply

Obtient ou définit la valeur du paramètre wreply à utiliser dans les demandes de connexion WS-Federation ("wsignin1.0").

Request

Obtient ou définit la valeur du paramètre wreq à utiliser dans les demandes de connexion WS-Federation ("wsignin1.0").

RequestPtr

Obtient ou définit la valeur du paramètre wreqptr à utiliser dans les demandes de connexion WS-Federation ("wsignin1.0").

RequireHttps

Obtient ou définit une valeur qui spécifie si la communication avec le service STS doit utiliser le protocole HTTPS.

Resource

Obtient ou définit la valeur du paramètre wres à utiliser dans les demandes de connexion WS-Federation ("wsignin1.0").

SignInContext

Obtient ou définit une valeur de contexte propre à l’application à inclure dans le paramètre wctx dans les requêtes de connexion WS-Federation.

SignInQueryString

Obtient ou définit une chaîne de requête qui contient tous les paramètres supplémentaires à envoyer lors de demandes de connexion WS-Federation ("wsignin1.0").

SignOutQueryString

Obtient ou définit une chaîne de requête qui contient tous les paramètres supplémentaires à envoyer lors de demandes de déconnexion WS-Federation ("wsignout1.0").

SignOutReply

Obtient ou définit la valeur du paramètre wreply à utiliser dans les demandes de déconnexion WS-Federation ("wsignout1.0").

XmlDictionaryReaderQuotas

Obtient ou définit l'objet XmlDictionaryReaderQuotas à utiliser lors de la désérialisation des messages de réponse de connexion WS-Federation pour obtenir le jeton émis par le service de token de sécurité (STS).

Méthodes

CanReadSignInResponse(HttpRequestBase)

Retourne une valeur qui indique si la requête HTTP spécifiée est un message de réponse de connexion WS-Federation. Si le message est un message de nettoyage de déconnexion WS-Federation ("wsignoutcleanup1.0"), cette méthode traite la requête.

CanReadSignInResponse(HttpRequestBase, Boolean)

Retourne une valeur qui indique si la requête HTTP spécifiée est un message de réponse de connexion WS-Federation. Si le message est un message de nettoyage de déconnexion WS-Federation ("wsignoutcleanup1.0"), cette méthode traite la requête.

CreateSignInRequest(String, String, Boolean)

Crée un message de demande de connexion WS-Federation à l'aide des paramètres WS-Federation configurés sur le module.

Dispose()

Libère les ressources (sauf la mémoire) utilisées par l'instance actuelle de la classe HttpModuleBase.

(Hérité de HttpModuleBase)
Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
FederatedSignOut(Uri, Uri)

Se déconnecte au service d'émission de jeton de sécurité spécifié via le protocole WS-Federation.

GetFederationPassiveSignOutUrl(String, String, String)

Retourne une URL qui représente une demande de déconnexion WS-Federation adressée à l'émetteur spécifié et qui contient le paramètre wreply spécifié et les paramètres supplémentaires spécifiés.

GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetReferencedResult(String)

Obtient le résultat d'émission (en général le jeton émis) de l'URL spécifiée. Résout l'URL spécifiée dans le paramètre wresultptr dans un message de réponse de connexion.

GetReturnUrlFromResponse(HttpRequestBase)

Extrait l'URL de la page initialement demandée à partir de la réponse de connexion.

GetSecurityToken(HttpRequestBase)

Lit un jeton de sécurité à partir d'une demande HTTP spécifiée.

GetSecurityToken(SignInResponseMessage)

Lit un jeton de sécurité à partir du message de réponse de connexion WS Federation spécifié.

GetSessionTokenContext()

Obtient une valeur qui doit être persistante avec le cookie de session dans la propriété Context.

GetSignInResponseMessage(HttpRequestBase)

Lit un objet SignInResponseMessage à partir du paramètre POST de formulaire représenté par la requête HTTP spécifiée.

GetSignOutRedirectUrl(SignOutCleanupRequestMessage)

Détermine l'URL de redirection lors du traitement d'une demande de nettoyage de déconnexion WS-Federation (wsignoutcleanup1.0) qui contient un paramètre wreply.

GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
GetXmlTokenFromMessage(SignInResponseMessage)

Extrait le jeton émis du message de réponse de connexion WS Federation spécifié.

GetXmlTokenFromMessage(SignInResponseMessage, WSFederationSerializer)

Extrait le jeton émis du message spécifié de réponse de connexion WS-Federation à l'aide du sérialiseur WS-Federation spécifié.

Init(HttpApplication)

Initialise le module HTTP.

(Hérité de HttpModuleBase)
InitializeModule(HttpApplication)

Initialise le module et le prépare pour gérer les événements à partir de l’objet application ASP.NET du module.

InitializePropertiesFromConfiguration()

Initialise les propriétés du module selon la configuration spécifiée par la propriété FederationConfiguration du module.

IsSignInResponse(HttpRequestBase)

Obtient une valeur qui indique si la demande spécifiée est un message de réponse de connexion WS-Federation.

MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
OnAuthenticateRequest(Object, EventArgs)

Gère l’événement AuthenticateRequest à partir du pipeline ASP.NET.

OnAuthorizationFailed(AuthorizationFailedEventArgs)

Déclenche l’événement AuthorizationFailed.

OnEndRequest(Object, EventArgs)

Gère l’événement EndRequest à partir du pipeline ASP.NET.

OnPostAuthenticateRequest(Object, EventArgs)

Gère l’événement PostAuthenticateRequest à partir du pipeline ASP.NET.

OnRedirectingToIdentityProvider(RedirectingToIdentityProviderEventArgs)

Déclenche l’événement RedirectingToIdentityProvider.

OnSessionSecurityTokenCreated(SessionSecurityTokenCreatedEventArgs)

Déclenche l’événement SessionSecurityTokenCreated.

OnSignedIn(EventArgs)

Déclenche l’événement SignedIn.

OnSignedOut(EventArgs)

Déclenche l’événement SignedOut.

OnSignInError(ErrorEventArgs)

Déclenche l’événement SignInError.

OnSigningOut(SigningOutEventArgs)

Déclenche l’événement SigningOut.

OnSignOutError(ErrorEventArgs)

Déclenche l’événement SignOutError.

RedirectToIdentityProvider(String, String, Boolean)

Redirige l'utilisateur vers le service d'émission de jeton de sécurité spécifié par la propriété Issuer pour obtenir un jeton de sécurité à l'aide du protocole WS-Federation.

SetPrincipalAndWriteSessionToken(SessionSecurityToken, Boolean)

Définit l'entité de sécurité de thread et écrit éventuellement le cookie de session.

SignIn(String)

Exécute la connexion à un service d'émission de jeton de sécurité (STS) via le protocole WS-Federation.

SignOut()

Ferme la session active et demande à être redirigé vers l'URL spécifiée dans la requête HTTP actuelle.

SignOut(Boolean)

Ferme la session active et déclenche les événements appropriés.

SignOut(String)

Ferme la session active et demande à être redirigé vers l'URL spécifiée.

SignOut(String, Boolean)

Ferme la session active et demande à être redirigé vers l'URL spécifiée.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)
VerifyProperties()

Vérifie que les propriétés Issuer et Realm ne sont pas vides, et, que, si la propriété RequireHttps est true, que les URI spécifiés pour Issuer et Realm sont conformes Https.

Événements

AuthorizationFailed

Se produit lorsque le module détermine s'il doit rediriger l'utilisateur vers l'émetteur configuré à authentifier.

RedirectingToIdentityProvider

Se produit lorsque le module va rediriger l'utilisateur vers le fournisseur d'identité.

SecurityTokenReceived

Se produit lorsqu'un jeton de sécurité a été reçu d'un service d'émission de jeton de sécurité.

SecurityTokenValidated

Se produit après qu'un jeton de sécurité reçu du service d'émission de jeton (STS) de sécurité a été validé mais avant la création du jeton de sécurité de session.

SessionSecurityTokenCreated

Se produit lorsqu'un jeton de sécurité de session a été créé à partir du jeton de sécurité reçu d'un service d'émission de jeton de sécurité.

SignedIn

Se produit après que l'utilisateur ouvre une session.

SignedOut

Se produit juste après la suppression de la session pendant la fermeture de session.

SignInError

Déclenché lorsqu'une erreur se produit pendant la connexion.

SigningOut

Se produit avant de supprimer la session pendant la fermeture de session.

SignOutError

Déclenché lorsqu'une erreur se produit pendant la déconnexion.

S’applique à