SessionSecurityTokenHandler Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Qui SecurityTokenHandler traite les jetons de sécurité de type SessionSecurityToken.
public ref class SessionSecurityTokenHandler : System::IdentityModel::Tokens::SecurityTokenHandler
public class SessionSecurityTokenHandler : System.IdentityModel.Tokens.SecurityTokenHandler
type SessionSecurityTokenHandler = class
inherit SecurityTokenHandler
Public Class SessionSecurityTokenHandler
Inherits SecurityTokenHandler
- Héritage
- Dérivé
Exemples
Le code XML suivant montre comment remplacer le gestionnaire de jetons de sécurité de session par défaut dans une collection de gestionnaires de jetons par une instance de la classe dans la MachineKeySessionSecurityTokenHandler configuration.
<securityTokenHandlers>
<remove type="System.IdentityModel.Tokens.SessionSecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add type="System.IdentityModel.Services.Tokens.MachineKeySessionSecurityTokenHandler, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</securityTokenHandlers>
Remarques
La SessionSecurityTokenHandler classe sérialise, désérialise et valide les jetons de session. Les jetons de session sont des jetons de type SessionSecurityToken. La SessionSecurityTokenHandler classe sérialise les jetons vers et à partir du format de cookie. Par défaut, la classe sérialise les jetons en éléments conversation 1.3 WS-Secure Conversation Février 2005 ou WS-Secure Conversation 1.3 <wsc:SecurityContextToken> . Les jetons de session sont utilisés par le WSFederationAuthenticationModule (WSFAM) et le SessionAuthenticationModule (SAM) pour stocker des informations sur une session, ce qui est principalement ClaimsPrincipal associé à l’utilisateur authentifié et aux heures de début et d’expiration de la session.
Dans les scénarios passifs, les WSFederationAuthenticationModule appels à partir du SessionAuthenticationModule pipeline d’authentification (SAM) pour créer un jeton de session à partir de celui ClaimsPrincipal qui représente l’utilisateur authentifié. Le SAM utilise sa configuration SessionSecurityTokenHandler pour créer le jeton et le sérialiser dans un cookie (et pour désérialiser le jeton à partir d’un cookie sur les demandes suivantes). Le sam utilise une instance de sa classe configurée CookieHandler pour réécrire le cookie dans la réponse HTTP. Ce cookie est ensuite retourné au client et, lors des demandes suivantes, le client peut présenter le cookie plutôt que de renvoyer un aller-retour au fournisseur d’identité pour obtenir à nouveau un jeton de sécurité. Pour plus d’informations sur le fonctionnement des sessions avec WIF, consultez gestion des sessions WIF.
Note
L’élément <de configuration securityTokenHandlers> peut être utilisé pour spécifier un SessionSecurityTokenHandler qui a la responsabilité de sécuriser les sessions de l’application. Les développeurs doivent être prudents lors de la modification de ce paramètre de configuration, car un système mal configuré peut entraîner une compromission de l’application. Par exemple, la spécification d’une collection Transforms dérivée SessionSecurityTokenHandler et passage d’une collection Transforms vide (CookieTransform) à la base entraîne la sérialisation de l’identité des utilisateurs dans un cookie qui n’a pas été protégé. Cela peut permettre à un attaquant de modifier l’identité et donc de modifier les privilèges d’accès.
Si le jeton de session est en mode référence, autrement dit, sa SessionSecurityToken.IsReferenceMode propriété est true, le gestionnaire de jetons de session sérialise uniquement les propriétés du jeton de session qui sont nécessaires pour régénérer sa clé dans le SessionSecurityTokenCache. Dans le cas par défaut, la SessionSecurityTokenCacheKey classe est utilisée pour représenter les clés de cache, et le gestionnaire de jetons écrit les propriétés et SessionSecurityToken.KeyGeneration les SessionSecurityToken.ContextId propriétés du jeton. Si le jeton de session n’est pas en mode référence, autrement dit, la SessionSecurityToken.IsReferenceMode propriété est false, puis, en plus des propriétés mentionnées précédemment, le gestionnaire appelle la ApplyTransforms méthode sur un tableau d’octets sérialisé à partir du jeton et stocke également la valeur résultante dans le cookie. Pour plus d’informations sur la sérialisation du jeton, consultez la SessionSecurityTokenHandler.WriteToken(XmlWriter, SecurityToken) méthode.
La Transforms propriété obtient la liste des transformations appliquées au jeton de session dans la ApplyTransforms méthode. Toutes les transformations dérivent de la CookieTransform classe. Dans le cas par défaut, l’application DeflateCookieTransform et la ProtectedDataCookieTransform valeur sont appliquées. Utilise ProtectedDataCookieTransform l’API de protection des données (DPAPI) pour protéger le matériel de cookie. DPAPI utilise une clé spécifique à l’ordinateur sur lequel il s’exécute dans ses algorithmes de protection. Pour cette raison, le gestionnaire de jetons de session par défaut n’est pas utilisable dans les scénarios de batterie de serveurs Web, car dans de tels scénarios, les jetons écrits sur un ordinateur peuvent avoir besoin d’être lus sur un autre ordinateur. Vous pouvez utiliser de nombreuses stratégies pour contourner ce problème. Par exemple, vous pouvez :
Remplacez la valeur par défaut SessionSecurityTokenHandler par le MachineKeySessionSecurityTokenHandlerfichier . Vous MachineKeySessionSecurityTokenHandler pouvez spécifier des clés de signature et de chiffrement sous l’élément ASP.NET
<machineKey>dans le fichier de configuration.Fournissez un gestionnaire pour l’événement FederatedAuthentication.FederationConfigurationCreated dans le fichier global.asax.cs et remplacez le gestionnaire de jetons de session par défaut par une instance dont SessionSecurityTokenHandler la liste des transformations inclut le et le RsaSignatureCookieTransformRsaEncryptionCookieTransform. Vous pouvez créer la nouvelle instance en appelant l’un des constructeurs qui acceptent une liste de transformations.
Dérivez une transformation personnalisée de la CookieTransform classe de base et utilisez la méthode ci-dessus pour l’inclure dans la liste des transformations à appliquer.
Dérivez un gestionnaire de jetons personnalisé à partir de SessionSecurityTokenHandler votre propre mécanisme et implémentez votre propre mécanisme.
Pour plus d’informations sur l’utilisation de sessions dans des scénarios de batterie de serveurs web, consultez WIF et Web Farms.
Il SessionSecurityTokenHandler est inclus dans la collection de gestionnaires de jetons par défaut . Toutefois, vous pouvez le remplacer par un gestionnaire de jetons de session personnalisé en spécifiant d’abord un <élément remove> sous l’élément <securityTokenHandlers> pour supprimer le gestionnaire par défaut de la collection, puis en ajoutant votre gestionnaire de jetons personnalisé à l’aide de l’élément <d’ajout> . Par défaut, vous pouvez spécifier la durée de vie du jeton par défaut en incluant l’élément <sessionTokenRequirement> sous l’élément <add> . Vous pouvez concevoir un gestionnaire de jetons personnalisé pour prendre des éléments de configuration personnalisés sous l’élément <add> en remplaçant la LoadCustomConfiguration méthode pour fournir la logique pour les traiter.
Constructeurs
| Nom | Description |
|---|---|
| SessionSecurityTokenHandler() |
Initialise une nouvelle instance de la SessionSecurityTokenHandler classe qui utilise les transformations de cookie par défaut et la durée de vie des jetons. |
| SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>, TimeSpan) |
Initialise une nouvelle instance de la SessionSecurityTokenHandler classe qui utilise les transformations de cookie spécifiées et la durée de vie des jetons. |
| SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>) |
Initialise une nouvelle instance de la SessionSecurityTokenHandler classe qui utilise les transformations de cookie spécifiées. |
Champs
| Nom | Description |
|---|---|
| DefaultCookieTransforms |
Collection en lecture seule qui contient la liste des transformations par défaut à appliquer aux cookies, le DeflateCookieTransform et le ProtectedDataCookieTransform. |
| DefaultLifetime |
Constante qui spécifie la durée de vie par défaut pour les cookies, dix heures. |
Propriétés
| Nom | Description |
|---|---|
| CanValidateToken |
Obtient une valeur qui indique si ce gestionnaire prend en charge la validation des jetons de type SessionSecurityToken. |
| CanWriteToken |
Obtient une valeur qui indique si ce gestionnaire peut écrire des jetons de type SessionSecurityToken. |
| Configuration |
Obtient ou définit l’objet SecurityTokenHandlerConfiguration qui fournit la configuration de l’instance actuelle. (Hérité de SecurityTokenHandler) |
| ContainingCollection |
Obtient la collection de gestionnaires de jetons qui contient l’instance actuelle. (Hérité de SecurityTokenHandler) |
| CookieElementName |
Obtient le nom de l’élément cookie. |
| CookieNamespace |
Obtient l’espace de noms de l’élément cookie. |
| DefaultTokenLifetime |
Obtient la durée de vie du jeton par défaut. |
| TokenLifetime |
Obtient ou définit la durée de vie du jeton. |
| TokenType |
Obtient le type des jetons que ce gestionnaire traite. |
| Transforms |
Obtient les transformations qui seront appliquées au cookie. |
Méthodes
| Nom | Description |
|---|---|
| ApplyTransforms(Byte[], Boolean) |
Applique les transformations spécifiées par la Transforms propriété pour encoder ou décoder le cookie spécifié. |
| CanReadKeyIdentifierClause(XmlReader) |
Retourne une valeur qui indique si l’élément XML référencé par le lecteur XML spécifié est une clause d’identificateur de clé qui peut être désérialisée par cette instance. (Hérité de SecurityTokenHandler) |
| CanReadToken(String) |
Retourne une valeur qui indique si la chaîne spécifiée peut être désérialisée en tant que jeton du type traité par cette instance. (Hérité de SecurityTokenHandler) |
| CanReadToken(XmlReader) |
Retourne une valeur qui indique si le lecteur est positionné sur un |
| CanWriteKeyIdentifierClause(SecurityKeyIdentifierClause) |
Retourne une valeur qui indique si la clause d’identificateur de clé spécifiée peut être sérialisée par cette instance. (Hérité de SecurityTokenHandler) |
| CreateSecurityTokenReference(SecurityToken, Boolean) |
En cas de substitution dans une classe dérivée, crée la référence de jeton de sécurité pour les jetons traités par cette classe. Cette méthode est généralement appelée par un service de jeton de sécurité (STS). (Hérité de SecurityTokenHandler) |
| CreateSessionSecurityToken(ClaimsPrincipal, String, String, DateTime, DateTime) |
Crée une SessionSecurityToken base basée sur le principal de revendications et l’intervalle de temps spécifiés pendant lesquels le jeton est valide. |
| CreateToken(SecurityTokenDescriptor) |
Crée un jeton de sécurité basé sur le descripteur de jeton spécifié. |
| DetectReplayedToken(SecurityToken) |
En cas de substitution dans une classe dérivée, lève une exception si le jeton spécifié est détecté comme relecture. (Hérité de SecurityTokenHandler) |
| Equals(Object) |
Détermine si l’objet spécifié est égal à l’objet actuel. (Hérité de Object) |
| GetHashCode() |
Sert de fonction de hachage par défaut. (Hérité de Object) |
| GetTokenTypeIdentifiers() |
Obtient les URI de type de jeton pour les types de jetons qui peuvent être traités par ce gestionnaire. |
| GetType() |
Obtient la Type de l’instance actuelle. (Hérité de Object) |
| LoadCustomConfiguration(XmlNodeList) |
Charge la configuration personnalisée à partir de XML. |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| ReadKeyIdentifierClause(XmlReader) |
En cas de substitution dans une classe dérivée, désérialise le CODE XML référencé par le lecteur XML spécifié à une clause d’identificateur de clé qui fait référence à un jeton traité par la classe dérivée. (Hérité de SecurityTokenHandler) |
| ReadToken(Byte[], SecurityTokenResolver) |
Lit à SessionSecurityToken partir d’un flux d’octets à l’aide du programme de résolution de jeton spécifié. |
| ReadToken(String) |
En cas de substitution dans une classe dérivée, désérialise la chaîne spécifiée en un jeton du type traité par la classe dérivée. (Hérité de SecurityTokenHandler) |
| ReadToken(XmlReader, SecurityTokenResolver) |
Lit l’utilisation SessionSecurityToken du lecteur XML et du programme de résolution de jeton spécifiés. |
| ReadToken(XmlReader) |
Lit l’utilisation SessionSecurityToken du lecteur XML spécifié. |
| SetTransforms(IEnumerable<CookieTransform>) |
Définit les transformations qui seront appliquées aux cookies. |
| ToString() |
Retourne une chaîne qui représente l’objet actuel. (Hérité de Object) |
| TraceTokenValidationFailure(SecurityToken, String) |
Trace l’événement d’échec pendant la validation des jetons de sécurité lorsque le suivi est activé. (Hérité de SecurityTokenHandler) |
| TraceTokenValidationSuccess(SecurityToken) |
Trace la validation réussie de l’événement de jetons de sécurité lors de l’activation du suivi. (Hérité de SecurityTokenHandler) |
| ValidateSession(SessionSecurityToken) |
Détermine si la session associée au jeton spécifié est toujours valide. La validité est déterminée en vérifiant les propriétés et ValidTo les ValidFrom propriétés du jeton spécifié. Une exception est levée si la session n’est plus valide. |
| ValidateToken(SecurityToken) |
Valide le jeton spécifié et retourne ses revendications. |
| ValidateToken(SessionSecurityToken, String) |
Valide le jeton de session spécifié et retourne ses revendications. |
| WriteKeyIdentifierClause(XmlWriter, SecurityKeyIdentifierClause) |
En cas de substitution dans une classe dérivée, sérialise la clause d’identificateur de clé spécifiée en XML. La clause d’identificateur de clé doit être du type pris en charge par la classe dérivée. (Hérité de SecurityTokenHandler) |
| WriteToken(SecurityToken) |
En cas de substitution dans une classe dérivée, sérialise le jeton de sécurité spécifié dans une chaîne. Le jeton doit être du type traité par la classe dérivée. (Hérité de SecurityTokenHandler) |
| WriteToken(SessionSecurityToken) |
Sérialise le jeton spécifié dans un tableau d’octets. |
| WriteToken(XmlWriter, SecurityToken) |
Sérialise le jeton spécifié à l’aide de l’enregistreur XML spécifié. |