Este artigo demonstra como funciona a criação de serviços no WCF (Windows Communication Foundation). A ideia é entender como criar serviços seguros para garantir os sigilos de possíveis informações.
Em que situação o tema é útil
O tema é útil quando for necessário aplicar técnicas de segurança para serviços no WCF, tornando possível restringir o acesso a usuários não autorizados e criptografando mensagens apara que outras pessoas não autorizadas possam ver, por exemplo.
Segurança no WCF
Os sistemas e aplicativos estão cada dia mais expostos a riscos e ameaças que podem se aproveitar de pequenas vulnerabilidades dos projetos e colocar em perigo dados confidenciais e de grande valor ao seu proprietário. No sentido de entender e apresentar diferentes formas de como aplicar segurança no WCF, esse artigo aborda o contexto segurança da informação em vários cenários e necessidades. Para isso, vamos estudar e aplicar recursos de proteção no nível de transporte, mensagens e autenticação.
Ao se falar em software distribuído, estamos falando em informações que são trafegadas por caminhos que não são de responsabilidade das empresas, como a internet, por exemplo. Este é um cenário repleto de riscos e ameaças, pois pessoas mal intencionadas podem ter acesso a informações sigilosas. Porém, para facilitar o desenvolvimento de soluções que atendam a essas e outras necessidades do mundo real foi implementado no .NET Framework um recurso chamado de Windows Communication Foundation.
O objetivo deste artigo é abordar as questões mais importantes na segurança de serviços desenvolvidos no WCF. Serão mostrados na prática os tipos de segurança suportados pelo mesmo. Para isso, iremos desenvolver um serviço que recupere uma lista de clientes para um parceiro (consumidor) e entender como aplicar uma proteção para garantir a integridade e confidencialidade desses dados transportados pelo serviço.
Segurança no WCF
Podemos dizer que a segurança no WCF se preocupa com a proteção dos serviços e dados trafegados entre os participantes. Em geral, o aspecto mais comum de proteção é o conceito de autenticação.
Entretanto, em um ambiente distribuído a segurança se divide em diversos fatores:
Garantir o sigilo - proteger as comunicações entre fornecedores de serviços e consumidores. Por exemplo, um serviço exposto na internet e que trafega dados confidenciais de uma organização pode ser consumido por pessoas não autorizadas ou até mesmo, ter suas mensagens interceptadas por programas ou pessoas mal intencionadas. Normalmente, se consegue preservar esses dados com mensagens criptografadas.
Impedir adulteração ou corrupção das mensagens: em um cenário vulnerável, usuários maliciosos podem se aproveitar de falhas de segurança e corromper ou adulterar mensagens transitadas antes que cheguem ao seu destino, causando um grande impacto na qualidade da informação e integridade dos dados. Uma maneira de solucionar esse problema seria utilizar técnicas como hashing de mensagens e geração de assinaturas digitais. O hashing consiste de um embaralhamento e codificação do conteúdo de uma mensagem, resultando em um valor criptográfico. Por exemplo, em uma operação de hashing o texto “DevMedia” poderia ser transformado na seguinte cadeia de caracteres: “DFD 7558 7D88”. Esse valor também pode ser utilizado para verificar se o conteúdo de uma mensagem sofreu alteração, visto que qualquer modificação feita no texto original, irá gerar um valor hash diferente.
Garantir a entrega das mensagens: mesmo que uma mensagem seja interceptada e o usuário malicioso não consiga decifrar o código de segurança, ele pode interceptar a mensagem repetidamente com “ataque de repetição” e evitar a entrega dos dados, resultando em erro de funcionamento. Um ataque de repetição consiste da técnica de bombardear um determinado servidor/serviço com milhares de acessos simultâneos, sobrecarregando sua capacidade de resposta e consequentemente tirar o serviço atacado de operação.
Criando o projeto base
Vamos agora criar uma solução com três projetos que irão servir de base para implementação de segurança no serviço com WCF. Para isso, considere uma empresa chamada EContratante que queira fazer uma pesquisa de satisfação de seus clientes, então esta decide contratar os serviços de uma empresa especializada em pesquisas, a qual chamaremos de EPesquisa. A empresa EPesquisa irá precisar da relação de todos os clientes da EContratante para realizar a pesquisa de satisfação. O projeto então deve ficar conforme ilustrado na Figura 1.
Figura 1. Projeto da solução
Os projetos serão divididos em:
· WCFConsumer: projeto do tipo Windows Form, responsável por conter o formulário que apresenta ao usuário a relação de todos os clientes da empresa EContratantes para a empresa EPesquisa.
· WCFService: responsável por implementar o serviço que fornece a lista com todos os clientes da empresa EContratante.
· DataCliente: responsável por conter o mapeamento do banco de dados da empresa EContratante.
O projeto base
Os exemplos foram criados e implementados com as ferramentas apresentadas a seguir:
· Visual Studio 2010 Professional;
· SQL Server 2008 Express;
· Internet Information Services (IIS) 7.5;
· Microsoft Windows 7 Professional (Users/Groups).
Deve ser criado um banco de dados que irá conter uma tabela que armazenará todos os clientes da empresa EContratante. Assim, foi criado no SQL Server um novo banco de dados chamado “WCFSecurity” e nele foi adicionada uma tabela com o nome “Clientes” e os campos conforme apresentados na Tabela 1.
Coluna |
Tipo |
Permite nulo |
ID |
int |
|
NOME |
nvarchar(100) |
ü |
CIDADE |
nvarchar(50) |
ü |
... |
Confira outros conteúdos:
Teste unitário com NUnit
Como migrar projetos do ASP.NET MVC...
Crie relatórios com o Stimulsoft...
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.