O emprego de mecanismos poderosos de segurança em uma aplicação web é, na grande maioria dos casos, um requisito que não pode ser ignorado. A exploração de uma falha no sistema pode resultar em prejuízos financeiros incalculáveis para uma organização e causar demissões em massa na equipe do projeto.

Nestes cenários em que se deseja proteger os sistemas, é sempre recomendada a adoção de camadas de segurança implementadas pelas equipes envolvidas no projeto. Em um ambiente corporativo, estas camadas costumam estar divididas em quatro, sendo a primeira relacionada diretamente à infraestrutura, compreendendo o acesso dos usuários a servidores, seja ele físico ou lógico. Na camada seguinte, há o envolvimento da estrutura de rede, na qual contamos com firewalls, VPNs e DMZs para limitar a visibilidade de uma rede ou IP. Além destes equipamentos, normalmente utiliza-se um sistema de detecção de ataques para evitar problemas com DoS (Denial of Service) ou algoritmos de força bruta. Subindo mais uma camada, temos a Máquina Virtual Java, que implementa uma série de controles de segurança baseados em permissões concedidas a tipos primitivos e classes da linguagem para evitar a exploração de uma brecha no código. A última camada – e talvez a mais importante de todas – trata do controle de segurança nas aplicações e está ligada, principalmente, aos mecanismos de autenticação e autorização.

Como uma resposta para a necessidade de haver uma boa solução para aplicações Java no que diz respeito à quarta camada, surgiram diversas opções de bibliotecas que tentam combater ataques e exploração de falhas no projeto, como acesso não autorizado a recursos, leitura de dados confidenciais de usuários e até mesmo uma invasão no sistema.

Neste artigo, veremos como utilizar os mecanismos de autenticação e autorização do Spring Security em uma aplicação web que simula o funcionamento de uma locadora. O sistema rodará com JSF 2.2, CDI 1.1 para injeção de dependências e JPA 2.1 para acesso a uma base de dados no PostgreSQL. Além destes três frameworks, o Maven será configurado para gerenciamento das dependências e do build, e nosso servidor de aplicação será o WildFly 8.0.

O JavaServer Faces 2.2

O JavaServer Faces é um framework MVC orientado a eventos lançado em 2004 para a construção da camada de visão através do uso de componentes. Desde o seu primeiro release, a biblioteca vem ganhando cada vez mais adeptos, por se tratar de um produto oficial Java EE e apresentar um grande envolvimento de usuários na especificação da JSR.

Na versão 2, o JSF trouxe algumas novidades importantes, como o fim da necessidade de declarar os Managed Beans e as regras de navegação no faces-config.xml, um novo escopo entre requisição e sessão chamado ViewScope, suporte nativo a Ajax, possibilidade de usar bookmarking (ver BOX 1), entre outros.

Como qualquer outro produto de mercado, entretanto, o JavaServer Faces continua passando por aprimoramentos, e a versão 2.2, lançada em abril de 2013, não poderia deixar de lado novos recursos fundamentais. Entre eles, podemos citar:

• Adição de suporte ao escopo FlowScoped;

• Maior integração com o CDI;

• Melhoria no suporte a HTML5;

• Proteção contra ataques do tipo CSRF (Cross-Site Request Forgery).

BOX 1. Bookmarking

Refere-se à possibilidade de colocar uma página interna do sistema como um favorito do navegador para poder voltar a ela de forma direta posteriormente. Muito utilizado em sites de compras, de pesquisa, entre outros.

O Spring Security 3.2

O Spring Security foi lançado em 2003 com o propósito de incorporar recursos avançados de segurança à plataforma Java EE. Assim como os concorrentes, a biblioteca dispensa a realização de configurações no servidor de aplicação, facilitando o trabalho da equipe do projeto em uma possível migração de container.

Embora o framework faça parte do conjunto de projetos Spring, ele pode ser utilizado em sistemas Java com as mais diversas arquiteturas, independentemente de ter sido incorporada ou não a biblioteca com o core do Spring. Na versão 3.2, os principais recursos fornecidos pelo Spring Security são:

• Suporte extensível para autenticação e autorização;

• Proteção contra ataques de fixação de sessão, CSRF (Cross-Site Request Forgery) e clickjacking;

• Integração com a API de Servlets;

• Possibilidade de configuração da segurança utilizando apenas código Java, ou seja, sem o uso de arquivos XML.

Criando a aplicação

Fim do trecho gratuito • continue abaixo
CONTEÚDO EXCLUSIVO

Desbloqueie toda a DevMedia

  • +2000 artigos e vídeos
  • +40 trilhas sobre Front-end, Back-end, IA e muito mais
  • +5000 exercícios práticos
  • Mentorias ao vivo individuais
até 50% OFF
A partir de
R$ 69 /mês
Assinar agora