SessionSecurityTokenHandler Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
A 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
- Derivado
Exemplos
O XML seguinte mostra como substituir o handler de token de segurança de sessão por defeito numa coleção de tokens por uma instância da MachineKeySessionSecurityTokenHandler classe em 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>
Observações
A SessionSecurityTokenHandler classe serializa, desserializa e valida tokens de sessão. Os tokens de sessão são tokens do tipo SessionSecurityToken. A SessionSecurityTokenHandler classe serializa os tokens para e desde o formato de cookie. Por defeito, a classe serializa os 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ção sobre uma sessão, sendo isto principalmente o ClaimsPrincipal associado ao utilizador autenticado e os tempos de início e expiração da sessão.
Em cenários passivos, as WSFederationAuthenticationModule chamadas para o SessionAuthenticationModule (SAM) a partir do pipeline de autenticação criam um token de sessão a partir do ClaimsPrincipal que representa o utilizador autenticado. O SAM utiliza a sua configuração SessionSecurityTokenHandler para criar o token e serializá-lo num cookie (e para desserializar o token de um cookie em pedidos subsequentes). O SAM utiliza uma instância da sua classe configurada CookieHandler para escrever o cookie de volta na Resposta HTTP. Este cookie é então devolvido ao cliente e, em pedidos subsequentes, este pode apresentar o cookie em vez de fazer uma viagem de ida e volta ao fornecedor de identidade para recuperar um token de segurança. Para mais informações sobre como as sessões funcionam com a WIF, consulte Gestão de Sessões da WIF.
Note
O <elemento de configuração securityTokenHandlers> pode ser usado para especificar um SessionSecurityTokenHandler que tem a responsabilidade de proteger as sessões da aplicação. Os programadores devem ter cautela ao alterar esta definição, pois um sistema mal configurado pode resultar em comprometimento da aplicação. Por exemplo, especificar uma coleção derivada SessionSecurityTokenHandler e passar uma coleção vazia de Transforms (CookieTransform) para a base resultaria na serialização da identidade do utilizador para um cookie que não estava protegido. Isto poderia permitir a um atacante modificar a identidade e, assim, alterar os privilégios de acesso.
Se o token de sessão estiver em modo de referência, ou seja, a sua SessionSecurityToken.IsReferenceMode propriedade for true, o handler do token de sessão só serializa as propriedades do token de sessão necessárias para regenerar a sua chave no SessionSecurityTokenCache. No caso padrão, a SessionSecurityTokenCacheKey classe é usada para representar chaves de cache, e o gestor do token escreve as SessionSecurityToken.ContextId propriedades e SessionSecurityToken.KeyGeneration do token. Se o token de sessão não estiver em modo de referência, ou seja, a SessionSecurityToken.IsReferenceMode propriedade for false, então, além das propriedades mencionadas anteriormente, o handler invoca o ApplyTransforms método num array de bytes serializado a partir do token e armazena também o valor resultante no cookie. Para mais detalhes sobre como o token é serializado, consulte o SessionSecurityTokenHandler.WriteToken(XmlWriter, SecurityToken) método.
A Transforms propriedade recebe a lista de transformações que são aplicadas ao token de sessão no ApplyTransforms método. Todas as transformadas derivam da CookieTransform classe. No caso padrão, os DeflateCookieTransform e os ProtectedDataCookieTransform são aplicados. Utiliza ProtectedDataCookieTransform a API de Proteção de Dados (DPAPI) para proteger o material de cookies. O DPAPI utiliza uma chave específica para o computador em que está a correr nos seus algoritmos de proteção. Por esta razão, o tratador padrão de tokens de sessão não é utilizável em cenários de Web farm porque, nesses cenários, tokens escritos num computador podem precisar de ser lidos noutro computador. Pode usar várias estratégias para contornar este problema. Por exemplo, você pode:
Substitua o padrão SessionSecurityTokenHandler pelo MachineKeySessionSecurityTokenHandler. O MachineKeySessionSecurityTokenHandler permite-lhe especificar chaves de assinatura e encriptação sob o elemento ASP.NET
<machineKey>no ficheiro de configuração.Fornecer um handler para o FederatedAuthentication.FederationConfigurationCreated evento no ficheiro global.asax.cs e substituir o handler de token de sessão por defeito por uma instância de SessionSecurityTokenHandler que tenha uma lista de transformações que inclua o RsaSignatureCookieTransform e o RsaEncryptionCookieTransform. Podes criar a nova instância invocando um dos construtores que recebe uma lista de transformações.
Derive uma transformação personalizada a partir da CookieTransform classe base e use o método acima para a incluir na lista de transformações a aplicar.
Deriva um gestor personalizado de tokens e SessionSecurityTokenHandler implementa o teu próprio mecanismo.
Para mais informações sobre a utilização de sessões em cenários de Webfarms, consulte WIF e Web Farms.
O SessionSecurityTokenHandler está incluído na coleção de handlers de tokens por defeito; no entanto, pode substituí-lo por um handler de token de sessão personalizado, especificando primeiro um <elemento remove> sob o <elemento securityTokenHandlers> para remover o handler por defeito da coleção e depois adicionando o seu handler de token personalizado usando o <elemento add> . Por defeito, pode especificar a vida útil padrão do token incluindo o <elemento sessionTokenRequirement> por baixo do <add> elemento. Podes desenhar um gestor de token personalizado para tomar elementos de configuração personalizados sob o <add> elemento, sobrescrevendo o LoadCustomConfiguration método para fornecer a lógica para os processar.
Construtores
| Name | Description |
|---|---|
| SessionSecurityTokenHandler() |
Inicializa uma nova instância da SessionSecurityTokenHandler classe que utiliza as transformações padrão de cookies e a vida útil do token. |
| SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>, TimeSpan) |
Inicializa uma nova instância da SessionSecurityTokenHandler classe que utiliza as transformações de cookies especificadas e a duração do token. |
| SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>) |
Inicializa uma nova instância da SessionSecurityTokenHandler classe que utiliza as transformações de cookies especificadas. |
Campos
| Name | Description |
|---|---|
| DefaultCookieTransforms |
Uma coleção somente de leitura que contém a lista de transformações padrão a serem aplicadas a cookies, o DeflateCookieTransform e o ProtectedDataCookieTransform. |
| DefaultLifetime |
Uma constante que especifica o tempo de vida padrão dos cookies, dez horas. |
Propriedades
| Name | Description |
|---|---|
| CanValidateToken |
Obtém um valor que indica se este handler suporta validação de tokens do tipo SessionSecurityToken. |
| CanWriteToken |
Obtém um valor que indica se este manipulador pode escrever tokens do tipo SessionSecurityToken. |
| Configuration |
Obtém ou define o SecurityTokenHandlerConfiguration objeto que fornece a configuração para a instância atual. (Herdado de SecurityTokenHandler) |
| ContainingCollection |
Obtém a coleção do handler de tokens que contém a instância atual. (Herdado de SecurityTokenHandler) |
| CookieElementName |
Recebe o nome para o elemento dos biscoitos. |
| CookieNamespace |
Obtém o namespace para o elemento cookie. |
| DefaultTokenLifetime |
Obtém a vida útil padrão do token. |
| TokenLifetime |
Obtém ou define a vida útil do token. |
| TokenType |
Obtém o tipo de tokens que este handler processa. |
| Transforms |
Obtém as transformações que serão aplicadas ao cookie. |
Métodos
| Name | Description |
|---|---|
| ApplyTransforms(Byte[], Boolean) |
Aplica as transformações especificadas pela Transforms propriedade para codificar ou decodificar o cookie especificado. |
| CanReadKeyIdentifierClause(XmlReader) |
Devolve um valor que indica se o elemento XML referido pelo leitor XML especificado é uma cláusula identificadora-chave que pode ser desserializada por esta instância. (Herdado de SecurityTokenHandler) |
| CanReadToken(String) |
Devolve um valor que indica se a cadeia especificada pode ser desserializada como um token do tipo processado por esta instância. (Herdado de SecurityTokenHandler) |
| CanReadToken(XmlReader) |
Devolve um valor que indica se o leitor está posicionado num |
| CanWriteKeyIdentifierClause(SecurityKeyIdentifierClause) |
Devolve um valor que indica se a cláusula identificadora de chave especificada pode ser serializada por esta instância. (Herdado de SecurityTokenHandler) |
| CreateSecurityTokenReference(SecurityToken, Boolean) |
Quando sobreposto numa classe derivada, cria-se a referência do token de segurança para tokens processados por essa classe. Este método é normalmente chamado por um serviço de token de segurança (STS). (Herdado de SecurityTokenHandler) |
| CreateSessionSecurityToken(ClaimsPrincipal, String, String, DateTime, DateTime) |
Cria um SessionSecurityToken com base no principal de reivindicações especificado e no intervalo de tempo durante o qual o token é válido. |
| CreateToken(SecurityTokenDescriptor) |
Cria um token de segurança com base no descritor do token especificado. |
| DetectReplayedToken(SecurityToken) |
Quando sobrescrito numa classe derivada, lança uma exceção se o token especificado for detetado como sendo rejogado. (Herdado de SecurityTokenHandler) |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetTokenTypeIdentifiers() |
Obtém os URIs do tipo de token para os tipos de token que podem ser processados por este handler. |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| LoadCustomConfiguration(XmlNodeList) |
Carrega configuração personalizada a partir do XML. |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ReadKeyIdentifierClause(XmlReader) |
Quando sobreposto numa classe derivada, desserializa o XML referenciado pelo leitor XML especificado para uma cláusula identificadora 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 tokens especificado. |
| ReadToken(String) |
Quando sobreposta numa classe derivada, a cadeia especificada desserializa para um token do tipo processado pela classe derivada. (Herdado de SecurityTokenHandler) |
| ReadToken(XmlReader, SecurityTokenResolver) |
Lê usando SessionSecurityToken o leitor XML especificado e o resolvedor de tokens. |
| ReadToken(XmlReader) |
Lê o SessionSecurityToken usando o leitor XML especificado. |
| SetTransforms(IEnumerable<CookieTransform>) |
Define as transformações que serão aplicadas aos cookies. |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
| TraceTokenValidationFailure(SecurityToken, String) |
Rastreia o evento de falha durante a validação dos tokens de segurança quando o rastreio está ativado. (Herdado de SecurityTokenHandler) |
| TraceTokenValidationSuccess(SecurityToken) |
Rastreia o evento de validação bem-sucedida dos tokens de segurança quando o rastreio está ativado. (Herdado de SecurityTokenHandler) |
| ValidateSession(SessionSecurityToken) |
Determina se a sessão associada ao token especificado ainda é válida. A validade é determinada verificando as ValidFrom propriedades e ValidTo do token especificado. É lançada uma exceção se a sessão deixar de ser válida. |
| ValidateToken(SecurityToken) |
Valida o token especificado e devolve as suas reivindicações. |
| ValidateToken(SessionSecurityToken, String) |
Valida o token de sessão especificado e devolve as suas reivindicações. |
| WriteKeyIdentifierClause(XmlWriter, SecurityKeyIdentifierClause) |
Quando sobreposta numa classe derivada, serializa a cláusula identificadora de chave especificada para XML. A cláusula identificadora de chave deve ser do tipo suportado pela classe derivada. (Herdado de SecurityTokenHandler) |
| WriteToken(SecurityToken) |
Quando sobrescrito numa classe derivada, serializa o token de segurança especificado para uma cadeia. O token deve ser do tipo processado pela classe derivada. (Herdado de SecurityTokenHandler) |
| WriteToken(SessionSecurityToken) |
Serializa o token especificado num array de bytes. |
| WriteToken(XmlWriter, SecurityToken) |
Serializa o token especificado usando o escritor XML especificado. |