SessionSecurityTokenHandler Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
SecurityTokenHandler que procesa los tokens de seguridad de tipo 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
- Herencia
- Derivado
Ejemplos
El siguiente XML muestra cómo reemplazar el controlador de tokens de seguridad de sesión predeterminado en una colección de controladores de tokens por una instancia de la clase en la MachineKeySessionSecurityTokenHandler configuración.
<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>
Comentarios
La SessionSecurityTokenHandler clase serializa, deserializa y valida los tokens de sesión. Los tokens de sesión son tokens de tipo SessionSecurityToken. La SessionSecurityTokenHandler clase serializa los tokens hacia y desde el formato de cookie. De forma predeterminada, la clase serializa los tokens en WS-Secure elementos Conversation Feb2005 o WS-Secure Conversation 1.3 <wsc:SecurityContextToken>
. Los tokens de sesión los usa WSFederationAuthenticationModule (WSFAM) y SessionAuthenticationModule (SAM) para almacenar información sobre una sesión, que es principalmente el ClaimsPrincipal asociado al usuario autenticado y a los tiempos de inicio y expiración de la sesión.
En escenarios pasivos, las WSFederationAuthenticationModule llamadas a ( SessionAuthenticationModule SAM) desde la canalización de autenticación para crear un token de sesión a partir del ClaimsPrincipal que representa al usuario autenticado. Sam usa su configurado SessionSecurityTokenHandler para crear el token y serializarlo en una cookie (y para deserializar el token de una cookie en solicitudes posteriores). Sam usa una instancia de su clase configurada CookieHandler para volver a escribir la cookie en la respuesta HTTP. A continuación, esta cookie se devuelve al cliente y, en las solicitudes posteriores, el cliente puede presentar la cookie en lugar de volver a realizar un recorrido de ida y vuelta al proveedor de identidades para volver a obtener un token de seguridad. Para obtener más información sobre cómo funcionan las sesiones con WIF, consulte Administración de sesiones de WIF.
Nota
El <elemento de configuración securityTokenHandlers> se puede usar para especificar un SessionSecurityTokenHandler objeto que tiene la responsabilidad de proteger las sesiones de la aplicación. Los desarrolladores deben tener precaución al cambiar esta configuración, ya que un sistema mal configurado podría dar lugar a un riesgo en la aplicación. Por ejemplo, especificar una colección derivada SessionSecurityTokenHandler y pasar una colección Transforms vacía (CookieTransform) a la base, daría lugar a que la identidad de los usuarios se serializara en una cookie que no estaba protegida. Esto podría permitir que un atacante modifique la identidad y, por tanto, cambie los privilegios de acceso.
Si el token de sesión está en modo de referencia, es decir, su SessionSecurityToken.IsReferenceMode propiedad es true
, el controlador de tokens de sesión solo serializa las propiedades del token de sesión que son necesarios para volver a generar su clave en .SessionSecurityTokenCache En el caso predeterminado, la SessionSecurityTokenCacheKey clase se usa para representar claves de caché y el controlador de tokens escribe las SessionSecurityToken.ContextId propiedades y SessionSecurityToken.KeyGeneration del token. Si el token de sesión no está en modo de referencia, es decir, la SessionSecurityToken.IsReferenceMode propiedad es false
, además de las propiedades mencionadas anteriormente, el controlador invoca el ApplyTransforms método en una matriz de bytes serializada desde el token y almacena también el valor resultante en la cookie. Para obtener más información sobre cómo se serializa el token, consulte el SessionSecurityTokenHandler.WriteToken(XmlWriter, SecurityToken) método .
La Transforms propiedad obtiene la lista de transformaciones que se aplican al token de sesión en el ApplyTransforms método . Todas las transformaciones derivan de la CookieTransform clase . En el caso predeterminado , DeflateCookieTransform y ProtectedDataCookieTransform se aplican . ProtectedDataCookieTransform utiliza la API de protección de datos (DPAPI) para proteger el material de cookies. DPAPI usa una clave específica del equipo en el que se ejecuta en sus algoritmos de protección. Por este motivo, el controlador de tokens de sesión predeterminado no se puede usar en escenarios de granja de servidores web porque, en estos escenarios, es posible que los tokens escritos en un equipo deba leerse en otro equipo. Puede usar muchas estrategias para eludir este problema. Por ejemplo, puede:
Reemplace el valor predeterminado SessionSecurityTokenHandler por MachineKeySessionSecurityTokenHandler. MachineKeySessionSecurityTokenHandler permite especificar claves de firma y cifrado en el elemento ASP.NET
<machineKey>
del archivo de configuración.Proporcione un controlador para el FederatedAuthentication.FederationConfigurationCreated evento en el archivo global.asax.cs y reemplace el controlador de tokens de sesión predeterminado por una instancia de SessionSecurityTokenHandler que tiene una lista de transformaciones que incluye y RsaSignatureCookieTransformRsaEncryptionCookieTransform. Puede crear la nueva instancia invocando uno de los constructores que toma una lista de transformaciones.
Derive una transformación personalizada de la CookieTransform clase base y use el método anterior para incluirla en la lista de transformaciones que se van a aplicar.
Derive un controlador de tokens personalizado de SessionSecurityTokenHandler e implemente su propio mecanismo.
Para obtener más información sobre el uso de sesiones en escenarios de granja de servidores web, consulte WIF y Granjas de servidores web.
SessionSecurityTokenHandler Se incluye en la colección de controladores de tokens predeterminada; sin embargo, puede reemplazarlo por un controlador de tokens de sesión personalizado especificando primero un <elemento remove> en el <elemento securityTokenHandlers> para quitar el controlador predeterminado de la colección y, a continuación, agregar el controlador de tokens personalizado mediante el <elemento add>. De forma predeterminada, puede especificar la duración predeterminada del token mediante la inclusión del <elemento sessionTokenRequirement> en el <add>
elemento . Puede diseñar un controlador de tokens personalizado para tomar elementos de configuración personalizados en el <add>
elemento reemplazando el LoadCustomConfiguration método para proporcionar la lógica para procesarlos.
Constructores
SessionSecurityTokenHandler() |
Inicializa una nueva instancia de la clase SessionSecurityTokenHandler que usa las transformaciones de cookie predeterminadas y la duración del token. |
SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>) |
Inicializa una nueva instancia de la clase SessionSecurityTokenHandler que usa las transformaciones de cookie especificadas. |
SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>, TimeSpan) |
Inicializa una nueva instancia de la clase SessionSecurityTokenHandler que usa las transformaciones de cookie especificadas y la duración del token. |
Campos
DefaultCookieTransforms |
Una colección de solo lectura que contiene la lista de transformaciones predeterminadas que se aplican a las cookies, a DeflateCookieTransform y a ProtectedDataCookieTransform. |
DefaultLifetime |
Una constante que especifica la duración predeterminada para las cookies, diez horas. |
Propiedades
CanValidateToken |
Obtiene un valor que indica si este controlador admite la validación de tokens de tipo SessionSecurityToken. |
CanWriteToken |
Obtiene un valor que indica si este controlador puede escribir tokens de tipo SessionSecurityToken. |
Configuration |
Obtiene o establece el objeto SecurityTokenHandlerConfiguration que proporciona la configuración de la instancia actual. (Heredado de SecurityTokenHandler) |
ContainingCollection |
Obtiene la colección controladores de token que contiene la instancia actual. (Heredado de SecurityTokenHandler) |
CookieElementName |
Obtiene el nombre del elemento de la cookie. |
CookieNamespace |
Obtiene el espacio de nombres del elemento de la cookie. |
DefaultTokenLifetime |
Obtiene la duración predeterminada del token. |
TokenLifetime |
Obtiene o establece la duración de token. |
TokenType |
Obtiene el tipo de los tokens que este controlador procesa. |
Transforms |
Obtiene las transformaciones que se aplicarán a la cookie. |
Métodos
ApplyTransforms(Byte[], Boolean) |
Aplique las transformaciones especificadas por la propiedad de Transforms a la cookie especificada para codificarla o descodificarla. |
CanReadKeyIdentifierClause(XmlReader) |
Devuelve un valor que indica si el elemento XML al que hace referencia el lector XML especificado es una cláusula de identificador de clave que esta instancia puede deserializar. (Heredado de SecurityTokenHandler) |
CanReadToken(String) |
Devuelve un valor que indica si la cadena especificada se puede deserializar como token del tipo procesado por esta instancia. (Heredado de SecurityTokenHandler) |
CanReadToken(XmlReader) |
Devuelve un valor que indica si el lector está colocado en un elemento |
CanWriteKeyIdentifierClause(SecurityKeyIdentifierClause) |
Devuelve un valor que indica si la instancia puede serializar la cláusula de identificador de clave especificada. (Heredado de SecurityTokenHandler) |
CreateSecurityTokenReference(SecurityToken, Boolean) |
Cuando se reemplaza en una clase derivada, crea la referencia del token de seguridad para tokens procesados por esa clase. Un servicio de token de seguridad (STS) llama normalmente a este método. (Heredado de SecurityTokenHandler) |
CreateSessionSecurityToken(ClaimsPrincipal, String, String, DateTime, DateTime) |
Crea un objeto SessionSecurityToken basándose en la entidad de seguridad de notificaciones especificada y en el intervalo de tiempo durante el que el token es válido. |
CreateToken(SecurityTokenDescriptor) |
Crea un token de seguridad basándose en el descriptor de token especificado. |
DetectReplayedToken(SecurityToken) |
Cuando se reemplaza en una clase derivada, produce una excepción si el token especificado se detecta como que se está volviendo a reproducir. (Heredado de SecurityTokenHandler) |
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetTokenTypeIdentifiers() |
Obtiene el URI de tipo de token para los tipos de token que este controlador puede procesar. |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
LoadCustomConfiguration(XmlNodeList) |
Carga la configuración personalizado de XML. |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
ReadKeyIdentifierClause(XmlReader) |
Cuando se reemplaza en una clase derivada, deserializa el código XML al que hace referencia el lector XML especificado en una cláusula de identificador de clave que hace referencia a un token procesado por la clase derivada. (Heredado de SecurityTokenHandler) |
ReadToken(Byte[], SecurityTokenResolver) |
Lee el SessionSecurityToken de una secuencia de bytes mediante el solucionador de token especificado. |
ReadToken(String) |
Cuando se reemplaza en una clase derivada, deserializa la cadena especificada a un token del tipo procesado por la clase derivada. (Heredado de SecurityTokenHandler) |
ReadToken(XmlReader) |
Lee SessionSecurityToken utilizando el lector de XML especificado. |
ReadToken(XmlReader, SecurityTokenResolver) |
Lee SessionSecurityToken mediante el lector XML especificado y la resolución de token. |
SetTransforms(IEnumerable<CookieTransform>) |
Establece las transformaciones que se aplicarán a las cookies. |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
TraceTokenValidationFailure(SecurityToken, String) |
Hace un seguimiento del evento de error durante la validación de tokens de seguridad cuando está habilitado el seguimiento. (Heredado de SecurityTokenHandler) |
TraceTokenValidationSuccess(SecurityToken) |
Hace un seguimiento de la validación correcta del evento de tokens de seguridad cuando está habilitado el seguimiento. (Heredado de SecurityTokenHandler) |
ValidateSession(SessionSecurityToken) |
Determina si la sesión asociada al token especificado sigue siendo válida. La validez se determina comprobando las propiedades ValidFrom y ValidTo del token especificado. Se produce una excepción si la sesión ya no es válida. |
ValidateToken(SecurityToken) |
Valida el token especificado y devuelve sus notificaciones. |
ValidateToken(SessionSecurityToken, String) |
Valida el token de sesión especificado y devuelve sus notificaciones. |
WriteKeyIdentifierClause(XmlWriter, SecurityKeyIdentifierClause) |
Cuando se invalida en una clase derivada, serializa la cláusula del identificador de clave especificada a XML. La cláusula de identificador de clave debe ser del tipo admitido por la clase derivada. (Heredado de SecurityTokenHandler) |
WriteToken(SecurityToken) |
Cuando se reemplaza en una clase derivada, serializa el token de seguridad especificado en una cadena. El token debe ser del tipo procesado por la clase derivada. (Heredado de SecurityTokenHandler) |
WriteToken(SessionSecurityToken) |
Serializa el token especificado en una matriz de bytes. |
WriteToken(XmlWriter, SecurityToken) |
Serializa el token especificado mediante el sistema de escritura especificado XML. |