Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Esta seção discute a segurança de mensagens do WCF ao usar NetMsmqBinding.
Observação
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 enfileirada usando o WCF. Esta ilustração e terminologia são usadas para explicar
conceitos de segurança de transporte.
Ao enviar mensagens enfileiradas usando o WCF, a mensagem do WCF é anexada como um corpo da mensagem do MSMQ (Enfileiramento de Mensagens). Embora a segurança de transporte proteja toda a mensagem MSMQ, a segurança da mensagem (ou SOAP) protege apenas o corpo da mensagem MSMQ.
O conceito principal 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. Dessa forma, o MSMQ não desempenha nenhum papel ao proteger a mensagem WCF usando a segurança da mensagem.
A segurança de mensagens do WCF adiciona cabeçalhos de segurança à mensagem WCF que se integram às 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 uns aos outros. Você pode selecionar a segurança da mensagem configurando o modo Security para Message ou Both (ou seja, usar tanto a segurança de transporte quanto a segurança de 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 credencial e como usá-los 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 por 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 ele 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. Dessa forma, o cliente e o serviço precisam trocar certificados fora de banda. Em particular, o cliente, em virtude de manter o certificado do serviço (que pode estar encadeado a uma autoridade de certificação) em seu repositório confiável, precisa saber 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 correspondê-lo com o certificado em seu repositório 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 repositórios. Para obter mais informações sobre os diferentes repositórios, 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 os 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 enfileirada é que os tíquetes que contêm a identidade do cliente que o KDC (Centro de Distribuição de Chaves) distribui são relativamente curtos. Um tempo de duração está associado ao ticket Kerberos que indica a validade do ticket. Dessa forma, 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 em execução na conta SERVICE.
O protocolo Kerberos é usado por padrão ao escolher a credencial de mensagem.
Senha do nome de usuário
Usando essa propriedade, o cliente pode autenticar-se 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 o transporte e a segurança de mensagens
Ao usar a segurança de transporte e a segurança da mensagem, o certificado usado para proteger a mensagem no transporte e no nível da mensagem SOAP deve ser o mesmo.