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í.
que SecurityTokenHandler procesa 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 MachineKeySessionSecurityTokenHandler clase en la 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 WSFederationAuthenticationModule tokens de sesión los usa (WSFAM) y SessionAuthenticationModule (SAM) para almacenar información sobre una sesión, que es principalmente el ClaimsPrincipal asociado con el usuario autenticado y 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. El SAM usa su configurado SessionSecurityTokenHandler para crear el token y para 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 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 (CookieTransform) vacía a la base, daría lugar a que la identidad de los usuarios se serializase 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 se aplican y ProtectedDataCookieTransform . ProtectedDataCookieTransform usa la API de protección de datos (DPAPI) para proteger el material de la cookie. 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 hacer lo siguiente:
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 token 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 Web Farms.
SessionSecurityTokenHandler Se incluye en la colección de controladores de tokens predeterminada; sin embargo, puede reemplazarlo por un controlador de token 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 token 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
| Nombre | Description |
|---|---|
| SessionSecurityTokenHandler() |
Inicializa una nueva instancia de la SessionSecurityTokenHandler clase que usa las transformaciones de cookies predeterminadas y la duración del token. |
| SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>, TimeSpan) |
Inicializa una nueva instancia de la SessionSecurityTokenHandler clase que usa las transformaciones de cookies y la duración del token especificadas. |
| SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>) |
Inicializa una nueva instancia de la SessionSecurityTokenHandler clase que usa las transformaciones de cookies especificadas. |
Campos
| Nombre | Description |
|---|---|
| DefaultCookieTransforms |
Colección de solo lectura que contiene la lista de transformaciones predeterminadas que se van a aplicar a las cookies, y DeflateCookieTransform .ProtectedDataCookieTransform |
| DefaultLifetime |
Constante que especifica la duración predeterminada de las cookies, diez horas. |
Propiedades
| Nombre | Description |
|---|---|
| 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 SecurityTokenHandlerConfiguration objeto que proporciona configuración para la instancia actual. (Heredado de SecurityTokenHandler) |
| ContainingCollection |
Obtiene la colección del controlador de tokens que contiene la instancia actual. (Heredado de SecurityTokenHandler) |
| CookieElementName |
Obtiene el nombre del elemento cookie. |
| CookieNamespace |
Obtiene el espacio de nombres del elemento cookie. |
| DefaultTokenLifetime |
Obtiene la duración predeterminada del token. |
| TokenLifetime |
Obtiene o establece la duración del token. |
| TokenType |
Obtiene el tipo de los tokens que procesa este controlador. |
| Transforms |
Obtiene las transformaciones que se aplicarán a la cookie. |
Métodos
| Nombre | Description |
|---|---|
| ApplyTransforms(Byte[], Boolean) |
Aplica las transformaciones especificadas por la Transforms propiedad para codificar o descodificar la cookie especificada. |
| 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 un token del tipo procesado por esta instancia. (Heredado de SecurityTokenHandler) |
| CanReadToken(XmlReader) |
Devuelve un valor que indica si el lector está situado en un |
| CanWriteKeyIdentifierClause(SecurityKeyIdentifierClause) |
Devuelve un valor que indica si esta 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 de token de seguridad para los tokens procesados por esa clase. Normalmente, un servicio de token de seguridad (STS) llama a este método. (Heredado de SecurityTokenHandler) |
| CreateSessionSecurityToken(ClaimsPrincipal, String, String, DateTime, DateTime) |
Crea un SessionSecurityToken basado en la entidad de seguridad de notificaciones y el intervalo de tiempo especificados durante el cual el token es válido. |
| CreateToken(SecurityTokenDescriptor) |
Crea un token de seguridad basado en el descriptor de token especificado. |
| DetectReplayedToken(SecurityToken) |
Cuando se invalida en una clase derivada, produce una excepción si el token especificado se detecta como reproducido. (Heredado de SecurityTokenHandler) |
| Equals(Object) |
Determina si el objeto especificado es igual al objeto actual. (Heredado de Object) |
| GetHashCode() |
Actúa como función hash predeterminada. (Heredado de Object) |
| GetTokenTypeIdentifiers() |
Obtiene los 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 personalizada desde XML. |
| MemberwiseClone() |
Crea una copia superficial del Objectactual. (Heredado de Object) |
| ReadKeyIdentifierClause(XmlReader) |
Cuando se reemplaza en una clase derivada, deserializa el XML al que hace referencia el lector XML especificado a 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 de SessionSecurityToken un flujo de bytes mediante el solucionador de tokens especificado. |
| ReadToken(String) |
Cuando se reemplaza en una clase derivada, deserializa la cadena especificada en un token del tipo procesado por la clase derivada. (Heredado de SecurityTokenHandler) |
| ReadToken(XmlReader, SecurityTokenResolver) |
Lee mediante SessionSecurityToken el lector XML y la resolución de tokens especificados. |
| ReadToken(XmlReader) |
Lee mediante SessionSecurityToken el lector XML especificado. |
| 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) |
Realiza un seguimiento del evento de error durante la validación de tokens de seguridad cuando el seguimiento está habilitado. (Heredado de SecurityTokenHandler) |
| TraceTokenValidationSuccess(SecurityToken) |
Realiza un seguimiento de la validación correcta del evento de tokens de seguridad cuando se habilita 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 ValidFrom propiedades 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 de identificador de clave especificada en XML. La cláusula de identificador de clave debe ser del tipo admitido por la clase derivada. (Heredado de SecurityTokenHandler) |
| WriteToken(SecurityToken) |
Cuando se invalida 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 XML especificado. |