Estou no início de um grande projeto na empresa em que atuo e uma das responsabilidades que me foram atribuídas é a parte da segurança.
Vamos ao cenário: Tenho um servidor de aplicações e um servidor web. No servidor de aplicações, haverão vários webservices e tudo mais e o servidor web um front end.
No projeto, criamos uma estrutura em que será transitado um objeto do tipo Usuário e este terá uma lista com os tipos de acesso (incluir, alterar, excluir, consultar) e os acessos em si (serviços).
Até aí, tudo bem. Gostaríamos de que o consumo da webservice (que é assincrona) tivesse uma proteção a mais para que nenhum expert em XML monitore um trânsito de dados, crie um XML na mão e envie esse.
Aí ficou a minha dúvida: É interessante que todos os serviços tenham a necessidade de serem assinados digitalmente ou somente o objeto Usuário (pois sempre que faço uma requisição, envio o objeto Usuário para validar se aquele serviço pode ser executado por ele)?
Se sim, com a assinatura digital, não posso comprometer o meu link de dados?
Não entendi bem onde exatamente voce pretende implantam “segurança”. Pelo descrito, eu entendo que pode ser em 3 possibilidades:
SSL/TLS - segurança na “camada de rede”: simplificando, expor os seus Web Services atraves de HTTPS. É o mais simples de implementar, pois só mexe com a parte de infra-estrutura. Dá para implementar certificação tanto do lado do servidor como do lado do cliente.
XML Encryption/WS Security: seria utilizar algum mecanismo de criptoigrafia no XML dos Web Services. Não conheço a especificação, portanto não sei como ele realmente funciona. Acho que tem que criptografar a mensagem toda.
Usar um mecanismo de criptografia própria: você pode bolar o seu proprio protocolo de criptografia, pois pelo o que eu entendi somente o cliente desenvolvido por voces é que vai usar estes Web Services. Eu acho que não vale a pena. Voce teria liberdade de criptografar o que acha necessário, mas vai ter trabalho…
Se o sistema já está pronto, não tenha dúvidas e implemente via SSL/TLS mesmo. Neste cenário, tudo é criptografado. Então vc não precisa ficar se questionando sobre o que criptografar. No máximo, você pode disponibilizar os Web Services menos criticos em termos de segurança através de HTTP mesmo.