Partager via


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és sur les requêtes entrantes. Il WSFederationAuthenticationModule s’agit du module principal que WIF offre prête à l’emploi pour gérer l’accès aux identités basée sur les revendications dans les applications ASP.NET.

L’événement 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 de la façon dont l’authentification et le traitement des revendications ont lieu. La WSFederationAuthenticationModule fonctionnalité est divisée en méthodes spécifiques à la tâche.

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). La WSFAM est implémentée prête à l’emploi par Windows Identity Foundation (WIF). WSFAM est ajouté au pipeline ASP.NET en effectuant 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 événements et AuthenticateRequest les EndRequest événements. L’écoute de l’événement EndRequest permet au WSFAM de rediriger les clients vers un service de jeton de sécurité (STS) pour obtenir un jeton de sécurité lorsque l’autorisation échoue sur une ressource demandée. L’écoute de l’événement AuthenticateRequest permet au WSFAM de surveiller les requêtes HTTP d’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 l’utilisateur authentifié à l’aide des ClaimsPrincipal revendications présentes dans le jeton.

Lorsque vous utilisez WSFAM, la gestion des sessions est fournie par un module d’authentification de session (SAM), qui est une 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. Sam surveille les demandes d’authentification (session). Lorsque ces cookies sont présents et valides, le module extrait l’utilisateur ClaimsPrincipal authentifié de la SessionSecurityToken propriété et définit la HttpContext.User propriété et les propriétés du principal Thread.CurrentPrincipal du thread.

WSFAM fournit les éléments suivants :

  • 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 sur 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 sur 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 de jeton de sécurité (STS) 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) dans 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, le sam est utilisé pour écrire un cookie de session sur le client. Lors des demandes suivantes du client, le SAM fournit l’authentification à l’aide du jeton conservé dans le cookie de session.

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 de la façon dont l’authentification et le traitement des revendications ont lieu.

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 le WSFAM envoie la demande de connexion WS-Federation au STS. Vous pouvez utiliser cet événement pour modifier les paramètres dans 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 le jeton de sécurité envoyé par le STS est lu à 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 le jeton de session (SessionSecurityToken) créé à partir du principal de revendications est utilisé pour définir le principal de thread et l’utilisateur actuel et est écrit dans le cookie de session. Vous permet 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 l’exception d’être retournée à l’appelant.

Lors de la déconnexion d’une session ou lors du traitement d’une demande de nettoyage de WS-Federation (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 l’exception d’être retournée à l’appelant.

Note

Les événements de déconnexion ne sont pas déclenchés lors de la déconnexion au niveau du 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, au lieu 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 du STS, vous devez utiliser la FederatedSignOut méthode.

WSFAM gère WS-Federation demandes de nettoyage de déconnexion (« wsignoutcleanup1.0 »), en supprimant sa session avec le client. Si le paramètre wreply dans le message de nettoyage de déconnexion n’est pas défini, WSFAM retourne une image d’une coche verte au STS qui a envoyé le message. Cette fonctionnalité peut être utilisée par un STS comme 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 à la tâche. Vous pouvez remplacer ces méthodes dans les classes dérivées pour modifier le comportement de 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é, les WSFederationAuthenticationModule événements déclenchent des événements à différentes étapes de traitement d’une requête HTTP. ASP.NET développeurs peuvent gérer ces événements dans le fichier global.asax.

Constructeurs

Nom Description
WSFederationAuthenticationModule()

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

Propriétés

Nom Description
AuthenticationType

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

FederationConfiguration

Obtient ou définit l’objet FederationConfiguration qui est en vigueur pour le module actuel.

(Hérité de HttpModuleBase)
Freshness

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

HomeRealm

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

Issuer

Obtient ou définit un URI qui identifie l’émetteur prévu du jeton de sécurité.

PassiveRedirectEnabled

Obtient ou définit une valeur qui spécifie si le module est activé pour lancer WS-Federation redirections de protocole.

PersistentCookiesOnPassiveRedirects

Obtient ou définit une valeur qui spécifie si un cookie de session permanente est émis lors de l’authentification réussie.

Policy

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

Realm

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

Reply

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

Request

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

RequestPtr

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

RequireHttps

Obtient ou définit une valeur qui spécifie si la communication avec le service de jeton de sécurité (STS) doit utiliser le protocole HTTPS.

Resource

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

SignInContext

Obtient ou définit une valeur de contexte spécifique à l’application à inclure dans le paramètre wctx dans WS-Federation demandes de connexion.

SignInQueryString

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

SignOutQueryString

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

SignOutReply

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

XmlDictionaryReaderQuotas

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

Méthodes

Nom Description
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 WS-Federation message de nettoyage de déconnexion (« wsignoutcleanup1.0 »), cette méthode traite la requête.

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 WS-Federation message de nettoyage de déconnexion (« 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 de WS-Federation configurés sur le module.

Dispose()

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

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

Déconnectez-vous du service de jeton de sécurité (STS) spécifié à l’aide du 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()

Sert de fonction de hachage par défaut.

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

Obtient le résultat d’émission (généralement le jeton émis) à partir 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 qui a été demandée à l’origine à partir de la réponse de connexion.

GetSecurityToken(HttpRequestBase)

Lit un jeton de sécurité à partir de la requête 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 chaîne qui doit être conservée avec le cookie de session dans la Context propriété.

GetSignInResponseMessage(HttpRequestBase)

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

GetSignOutRedirectUrl(SignOutCleanupRequestMessage)

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

GetType()

Obtient la Type de l’instance actuelle.

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

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

GetXmlTokenFromMessage(SignInResponseMessage)

Extrait le jeton émis du message de réponse de connexion 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 en fonction de la configuration spécifiée par la FederationConfiguration propriété du module.

IsSignInResponse(HttpRequestBase)

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

MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(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 de jeton de sécurité spécifié par la Issuer propriété pour obtenir un jeton de sécurité à l’aide du protocole WS-Federation.

SetPrincipalAndWriteSessionToken(SessionSecurityToken, Boolean)

Définit le principal du thread et écrit éventuellement le cookie de session.

SignIn(String)

Effectue la connexion à un service de jeton de sécurité (STS) via le protocole WS-Federation.

SignOut()

Déconnecte la session active et demande une redirection vers l’URL spécifiée dans la requête HTTP actuelle.

SignOut(Boolean)

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

SignOut(String, Boolean)

Déconnecte la session active et demande une redirection vers l’URL spécifiée.

SignOut(String)

Déconnecte la session active et demande une redirection 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 et les Issuer propriétés ne sont pas vides, et que, si la RequireHttps propriété est true, que les URI spécifiés pour Issuer et Realm sont conformes à Realm HTTPS.

Événements

Nom Description
AuthorizationFailed

Se produit lorsque le module détermine s’il doit rediriger l’utilisateur vers l’émetteur configuré pour l’authentification.

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 de jeton de sécurité (STS).

SecurityTokenValidated

Se produit après qu’un jeton de sécurité reçu du service de jeton de sécurité (STS) 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 de jeton de sécurité (STS).

SignedIn

Se produit une fois que l’utilisateur est connecté.

SignedOut

Se produit juste après la suppression de la session lors de la déconnexion.

SignInError

Déclenché lorsqu’une erreur se produit lors de la connexion.

SigningOut

Se produit avant de supprimer la session pendant la déconnexion.

SignOutError

Déclenché lorsqu’une erreur se produit lors de la déconnexion.

S’applique à