Protegendo mensagens usando a segurança de mensagens

Esta seção discute a segurança da mensagem WCF ao usar NetMsmqBindingo .

Nota

Antes de ler este tópico, é recomendável que você leia Conceitos de segurança.

A ilustração a seguir fornece um modelo conceitual de comunicação em fila usando WCF. Esta ilustração e terminologia são usadas para explicar

conceitos de segurança dos transportes.

Queued Application Diagram

Ao enviar mensagens em fila usando WCF, a mensagem WCF é anexada como um corpo da mensagem de enfileiramento de mensagens (MSMQ). Enquanto a segurança de transporte protege toda a mensagem MSMQ, a segurança da mensagem (ou SOAP) protege apenas o corpo da mensagem MSMQ.

O conceito-chave de segurança de mensagem é que o cliente protege a mensagem para o aplicativo de recebimento (serviço), ao contrário da segurança de transporte, onde o cliente protege a mensagem para a fila de destino. Como tal, o MSMQ não desempenha nenhum papel ao proteger a mensagem WCF usando a segurança da mensagem.

A segurança da mensagem WCF adiciona cabeçalhos de segurança à mensagem WCF que se integram com infraestruturas de segurança existentes, como um certificado ou o protocolo Kerberos.

Tipo de credencial de mensagem

Usando a segurança da mensagem, o serviço e o cliente podem apresentar credenciais para autenticar um ao outro. Você pode selecionar a segurança da mensagem definindo o modo como Message ou Both (ou seja, usar a segurança de transporte e a Security segurança da mensagem).

O serviço pode usar a Current propriedade para inspecionar a credencial usada para autenticar o cliente. Isso também pode ser usado para verificações de autorização adicionais que o serviço opta por implementar.

Esta seção explica os diferentes tipos de credenciais e como usá-las com filas.

Certificado

O tipo de credencial de certificado usa um certificado X.509 para identificar o serviço e o cliente.

Em um cenário típico, o cliente e o serviço recebem um certificado válido de uma autoridade de certificação confiável. Em seguida, a conexão é estabelecida, o cliente autentica a validade do serviço usando o certificado do serviço para decidir se pode confiar no serviço. Da mesma forma, o serviço usa o certificado do cliente para validar a confiança do cliente.

Dada a natureza desconectada das filas, o cliente e o serviço podem não estar online ao mesmo tempo. Como tal, o cliente e o serviço têm de trocar certificados fora da banda. Em particular, o cliente, em virtude de possuir o certificado do serviço (que pode ser encadeado a uma autoridade de certificação) em seu armazenamento confiável, deve confiar que está se comunicando com o serviço correto. Para autenticar o cliente, o serviço usa o certificado X.509 anexado com a mensagem para fazer a correspondência com o certificado em seu armazenamento para verificar a autenticidade do cliente. Novamente, o certificado deve ser encadeado a uma autoridade de certificação.

Em um computador que executa o Windows, os certificados são mantidos em vários tipos de lojas. Para obter mais informações sobre os diferentes armazenamentos, consulte Repositórios de certificados.

Windows

O tipo de credencial de mensagem do Windows usa o protocolo Kerberos.

O protocolo Kerberos é um mecanismo de segurança que autentica usuários em um domínio e permite que os usuários autenticados estabeleçam contextos seguros com outras entidades em um domínio.

O problema com o uso do protocolo Kerberos para comunicação em fila é que os tíquetes que contêm a identidade do cliente que o Centro de Distribuição de Chaves (KDC) distribui têm vida relativamente curta. Um tempo de vida está associado ao tíquete Kerberos que indica a validade do tíquete. Como tal, dada a alta latência, você não pode ter certeza de que o token ainda é válido para o serviço que autentica o cliente.

Observe que, ao usar esse tipo de credencial, o serviço deve estar sendo executado na conta SERVICE.

O protocolo Kerberos é usado por padrão ao escolher a credencial da mensagem.

Nome de utilizador Palavra-passe

Usando essa propriedade, o cliente pode autenticar no servidor usando uma senha de nome de usuário no cabeçalho de segurança da mensagem.

IssuedToken

O cliente pode usar o serviço de token de segurança para emitir um token que pode ser anexado à mensagem para que o serviço autentique o cliente.

Usando a segurança de transporte e mensagens

Ao usar a segurança de transporte e a segurança de mensagem, o certificado usado para proteger a mensagem no nível de transporte e de mensagem SOAP deve ser o mesmo.

Consulte também