Partilhar via


SessionSecurityTokenHandler Classe

Definição

Um SecurityTokenHandler que processa tokens de segurança do 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
Herança
SessionSecurityTokenHandler
Derivado

Exemplos

O XML a seguir mostra como substituir o manipulador de token de segurança de sessão padrão em uma coleção de manipuladores de token por uma instância da MachineKeySessionSecurityTokenHandler classe na configuração.

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

Comentários

A SessionSecurityTokenHandler classe serializa, desserializa e valida tokens de sessão. Tokens de sessão são tokens do tipo SessionSecurityToken. A SessionSecurityTokenHandler classe serializa os tokens de e para o formato cookie. Por padrão, a classe serializa tokens em elementos WS-Secure Conversation Feb2005 ou WS-Secure Conversation 1.3 <wsc:SecurityContextToken> . Os tokens de sessão são usados pelo WSFederationAuthenticationModule (WSFAM) e pelo SessionAuthenticationModule (SAM) para armazenar informações sobre uma sessão, isso é principalmente associado ClaimsPrincipal ao usuário autenticado e aos tempos de início e de expiração da sessão.

Em cenários passivos, as WSFederationAuthenticationModule chamadas para o SessionAuthenticationModule (SAM) do pipeline de autenticação para criar um token de sessão a partir do ClaimsPrincipal que representa o usuário autenticado. O SAM usa seu configurado SessionSecurityTokenHandler para criar o token e serializá-lo em um cookie (e desserializar o token de um cookie em solicitações subsequentes). O SAM usa uma instância de sua classe configurada CookieHandler para gravar o cookie de volta na resposta HTTP. Esse cookie é retornado ao cliente e, em solicitações subsequentes, o cliente pode apresentar o cookie em vez de fazer uma viagem de ida e volta ao provedor de identidade para obter novamente um token de segurança. Para obter mais informações sobre como as sessões operam com WIF, consulte o Gerenciamento de Sessão wif.

Observação

O <elemento de configuração securityTokenHandlers> pode ser usado para especificar um SessionSecurityTokenHandler que tenha a responsabilidade de proteger as sessões do aplicativo. Os desenvolvedores devem ter cuidado ao alterar essa configuração, pois um sistema configurado incorretamente pode resultar em comprometimento do aplicativo. Por exemplo, especificar uma coleção derivada SessionSecurityTokenHandler e passar uma coleção de Transformações vazia (CookieTransform) para a base resultaria na serialização da identidade dos usuários em um cookie que não estava protegido. Isso pode permitir que um invasor modifique a identidade e, portanto, altere os privilégios de acesso.

Se o token de sessão estiver no modo de referência, ou seja, sua SessionSecurityToken.IsReferenceMode propriedade será true, o manipulador de token de sessão serializa apenas as propriedades do token de sessão necessárias para regenerar sua chave no SessionSecurityTokenCache. No caso padrão, a SessionSecurityTokenCacheKey classe é usada para representar chaves de cache e o manipulador de token grava as propriedades e SessionSecurityToken.KeyGeneration as SessionSecurityToken.ContextId propriedades do token. Se o token de sessão não estiver no modo de referência, ou seja, a SessionSecurityToken.IsReferenceMode propriedade será false, em seguida, além das propriedades mencionadas anteriormente, o manipulador invocará o ApplyTransforms método em uma matriz de bytes serializada do token e armazenará o valor resultante no cookie também. Para obter mais detalhes sobre como o token é serializado, consulte o SessionSecurityTokenHandler.WriteToken(XmlWriter, SecurityToken) método.

A Transforms propriedade obtém a lista de transformações que são aplicadas ao token de sessão no ApplyTransforms método. Todas as transformações derivam da CookieTransform classe. No caso padrão, e DeflateCookieTransform os ProtectedDataCookieTransform são aplicados. O ProtectedDataCookieTransform usa a DPAPI (API de Proteção de Dados) para proteger o material do cookie. O DPAPI usa uma chave específica para o computador no qual está em execução em seus algoritmos de proteção. Por esse motivo, o manipulador de token de sessão padrão não é utilizável em cenários de farm da Web porque, nesses cenários, os tokens gravados em um computador podem precisar ser lidos em outro computador. Você pode usar muitas estratégias para contornar esse problema. Por exemplo, você pode:

Para obter mais informações sobre como usar sessões em cenários de farm da Web, consulte WIF e Web Farms.

Ele SessionSecurityTokenHandler está incluído na coleção de manipuladores de token padrão; no entanto, você pode substituí-lo por um manipulador de token de sessão personalizado especificando primeiro um <elemento remove> sob o <elemento securityTokenHandlers> para remover o manipulador padrão da coleção e, em seguida, adicionar seu manipulador de token personalizado usando o <elemento add> . Por padrão, você pode especificar o tempo de vida do token padrão incluindo o <elemento sessionTokenRequirement> no <add> elemento. Você pode criar um manipulador de token personalizado para usar elementos de configuração personalizados no <add> elemento substituindo o LoadCustomConfiguration método para fornecer a lógica para processá-los.

Construtores

Nome Description
SessionSecurityTokenHandler()

Inicializa uma nova instância da SessionSecurityTokenHandler classe que usa as transformações de cookie padrão e o tempo de vida do token.

SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>, TimeSpan)

Inicializa uma nova instância da SessionSecurityTokenHandler classe que usa as transformações de cookie especificadas e o tempo de vida do token.

SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>)

Inicializa uma nova instância da SessionSecurityTokenHandler classe que usa as transformações de cookie especificadas.

Campos

Nome Description
DefaultCookieTransforms

Uma coleção somente leitura que contém a lista de transformações padrão a serem aplicadas a cookies, a DeflateCookieTransform .ProtectedDataCookieTransform

DefaultLifetime

Uma constante que especifica o tempo de vida padrão para cookies, dez horas.

Propriedades

Nome Description
CanValidateToken

Obtém um valor que indica se esse manipulador dá suporte à validação de tokens do tipo SessionSecurityToken.

CanWriteToken

Obtém um valor que indica se esse manipulador pode gravar tokens do tipo SessionSecurityToken.

Configuration

Obtém ou define o SecurityTokenHandlerConfiguration objeto que fornece configuração para a instância atual.

(Herdado de SecurityTokenHandler)
ContainingCollection

Obtém a coleção de manipuladores de token que contém a instância atual.

(Herdado de SecurityTokenHandler)
CookieElementName

Obtém o nome do elemento cookie.

CookieNamespace

Obtém o namespace do elemento cookie.

DefaultTokenLifetime

Obtém o tempo de vida do token padrão.

TokenLifetime

Obtém ou define o tempo de vida do token.

TokenType

Obtém o tipo de tokens que esse manipulador processa.

Transforms

Obtém as transformações que serão aplicadas ao cookie.

Métodos

Nome Description
ApplyTransforms(Byte[], Boolean)

Aplica as transformações especificadas pela Transforms propriedade para codificar ou decodificar o cookie especificado.

CanReadKeyIdentifierClause(XmlReader)

Retorna um valor que indica se o elemento XML referenciado pelo leitor XML especificado é uma cláusula de identificador de chave que pode ser desserializada por essa instância.

(Herdado de SecurityTokenHandler)
CanReadToken(String)

Retorna um valor que indica se a cadeia de caracteres especificada pode ser desserializada como um token do tipo processado por essa instância.

(Herdado de SecurityTokenHandler)
CanReadToken(XmlReader)

Retorna um valor que indica se o leitor está posicionado em um <wsc:SecurityContextToken> elemento.

CanWriteKeyIdentifierClause(SecurityKeyIdentifierClause)

Retorna um valor que indica se a cláusula de identificador de chave especificada pode ser serializada por essa instância.

(Herdado de SecurityTokenHandler)
CreateSecurityTokenReference(SecurityToken, Boolean)

Quando substituído em uma classe derivada, cria a referência de token de segurança para tokens processados por essa classe. Esse método normalmente é chamado por um STS (serviço de token de segurança).

(Herdado de SecurityTokenHandler)
CreateSessionSecurityToken(ClaimsPrincipal, String, String, DateTime, DateTime)

Cria um SessionSecurityToken com base na entidade de segurança de declarações especificada e no intervalo de tempo durante o qual o token é válido.

CreateToken(SecurityTokenDescriptor)

Cria um token de segurança com base no descritor de token especificado.

DetectReplayedToken(SecurityToken)

Quando substituído em uma classe derivada, gera uma exceção se o token especificado for detectado como sendo reproduzido.

(Herdado de SecurityTokenHandler)
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetTokenTypeIdentifiers()

Obtém os URIs de tipo de token para os tipos de token que podem ser processados por esse manipulador.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
LoadCustomConfiguration(XmlNodeList)

Carrega a configuração personalizada do XML.

MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
ReadKeyIdentifierClause(XmlReader)

Quando substituído em uma classe derivada, desserializa o XML referenciado pelo leitor XML especificado para uma cláusula de identificador de chave que faz referência a um token processado pela classe derivada.

(Herdado de SecurityTokenHandler)
ReadToken(Byte[], SecurityTokenResolver)

Lê a SessionSecurityToken partir de um fluxo de bytes usando o resolvedor de token especificado.

ReadToken(String)

Quando substituído em uma classe derivada, desserializa a cadeia de caracteres especificada para um token do tipo processado pela classe derivada.

(Herdado de SecurityTokenHandler)
ReadToken(XmlReader, SecurityTokenResolver)

Lê o SessionSecurityToken uso do leitor XML e do resolvedor de token especificados.

ReadToken(XmlReader)

Lê o SessionSecurityToken uso do leitor XML especificado.

SetTransforms(IEnumerable<CookieTransform>)

Define as transformações que serão aplicadas aos cookies.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)
TraceTokenValidationFailure(SecurityToken, String)

Rastreia o evento de falha durante a validação de tokens de segurança quando o rastreamento está habilitado.

(Herdado de SecurityTokenHandler)
TraceTokenValidationSuccess(SecurityToken)

Rastreia a validação bem-sucedida do evento de tokens de segurança quando o rastreamento está habilitado.

(Herdado de SecurityTokenHandler)
ValidateSession(SessionSecurityToken)

Determina se a sessão associada ao token especificado ainda é válida. A validade é determinada verificando as propriedades e ValidTo as ValidFrom propriedades do token especificado. Uma exceção será gerada se a sessão não for mais válida.

ValidateToken(SecurityToken)

Valida o token especificado e retorna suas declarações.

ValidateToken(SessionSecurityToken, String)

Valida o token de sessão especificado e retorna suas declarações.

WriteKeyIdentifierClause(XmlWriter, SecurityKeyIdentifierClause)

Quando substituído em uma classe derivada, serializa a cláusula de identificador de chave especificada para XML. A cláusula do identificador de chave deve ser do tipo compatível com a classe derivada.

(Herdado de SecurityTokenHandler)
WriteToken(SecurityToken)

Quando substituído em uma classe derivada, serializa o token de segurança especificado para uma cadeia de caracteres. O token deve ser do tipo processado pela classe derivada.

(Herdado de SecurityTokenHandler)
WriteToken(SessionSecurityToken)

Serializa o token especificado em uma matriz de bytes.

WriteToken(XmlWriter, SecurityToken)

Serializa o token especificado usando o gravador XML especificado.

Aplica-se a

Confira também