Compartilhar via


Considerações de segurança para sessões seguras

Você deve considerar os itens a seguir que afetam a segurança ao implementar sessões seguras. Para obter mais informações sobre considerações de segurança, consulte Considerações de segurança e Melhores práticas para segurança.

Sessões e metadados seguros

Quando uma sessão segura é estabelecida e a propriedade RequireCancellationestá definida como false, o Windows Communication Foundation (WCF) envia uma declaração mssp:MustNotSendCancel como parte dos metadados no documento da linguagem WSDL para o ponto de extremidade do serviço. A declaração mssp:MustNotSendCancel informa aos clientes que o serviço não responde às solicitações para cancelar a sessão segura. Quando a propriedade RequireCancellation é definida como true, o WCF não emite uma declaração mssp:MustNotSendCancel no documento da WSDL. Espera-se que os clientes enviem uma solicitação de cancelamento para o serviço quando não precisarem mais da sessão segura. Quando um cliente é gerado usando a Ferramenta de Utilitário de Metadados do ServiceModel (Svcutil.exe), o código do cliente reage adequadamente à presença ou ausência da declaração mssp:MustNotSendCancel.

Proteger conversas e tokens personalizados

Há alguns problemas com a combinação de tokens personalizados e chaves derivadas devido à maneira como ela é definida na especificação WS-SecureConversation. A especificação diz que wsse:SecurityTokenReference é um elemento opcional que faz referência ao token derivado: "/wsc:DerivedKeyToken/wsse:SecurityTokenReference Esse elemento opcional é usado para especificar o token de contexto de segurança, o token de segurança ou a chave/segredo compartilhado usado para a derivação. Se não for especificado, supõe-se que o destinatário possa determinar a chave compartilhada do contexto da mensagem. Se o contexto não puder ser determinado, uma falha como wsc:UnknownDerivationSource deve ser gerada."

Isso significa que, se quiser que um token personalizado seja derivado, você deverá encapsular seu tipo de cláusula em um elemento SecurityTokenReference. Há uma opção para desativar a derivação, mas o padrão é derivar chaves. Se você não conseguir encapsular a chave, a serialização do token de chave derivada terá sucesso, mas tentar desserializá-la gerará uma exceção.

Confira também