Segurança com Spring Security 3, JPA 2 e JSF 2

O artigo ensina como realizar a integração do framework Spring Security com JSF e JPA para o desenvolvimento de aplicações seguras. Além disso, veremos um exemplo prático e realista de uma aplicação segura.

Atenção: esse artigo tem um vídeo complementar. Clique e assista!

Do que se trata o artigo:

O artigo ensina como realizar a integração do framework Spring Security com JSF e JPA para o desenvolvimento de aplicações seguras. Além disso, veremos um exemplo prático e realista de uma aplicação segura.

Em que situação o tema é útil:

Este artigo é útil para desenvolvedores, arquitetos ou gerentes que estejam utilizando JSF em seus projetos e desejam aplicar políticas de segurança na aplicação.

Resumo DevMan:

O Spring Security é uma alternativa à segurança oferecida pela especificação Java EE. O framework centraliza as configurações em um único XML, dispensando configurações do container, tornando a aplicação web portável. Assim, todo o controle passa a ser feito de maneira declarativa, e na prática isso significa retirar do desenvolvedor a responsabilidade de ter que controlar o acesso a recursos por perfis de maneira programática, utilizando filtros, por exemplo.

Aplicativos web são formados por diversos recursos, como páginas dinâmicas, estáticas, imagens, downloads, uploads, formulários, relatórios, etc. Na maioria delas existe a necessidade de controlar o acesso dos usuários a estes recursos, restringindo-o somente para aqueles previamente identificados e autenticados. Portanto, toda aplicação, em especial as aplicações web, deve apresentar maneiras de alocar ou retirar permissões de seus usuários, através de mecanismos de controle de acesso como autenticação e autorização.

O Spring Security 3 é um framework que tem como objetivo auxiliar na autenticação e autorização dos usuários das aplicações. É uma ferramenta simples de ser utilizada, porém, na integração com JSF 2, é necessário alguns cuidados que serão apresentados neste artigo. O framework surgiu da necessidade de uma biblioteca de segurança Java robusta e adaptável a diversos tipos de situações. Apesar de existirem ferramentas como o Java Authentication and Authorization Service (JAAS) e o Java EE Security, a tecnologia da Spring Source é uma opção diferenciada que provê um conjunto de funcionalidades de fácil uso, além de fornecer apoio para integração com vários outros sistemas de autenticação que podem já existir na empresa ou ser de sua necessidade.

Neste contexto, o objetivo desse artigo será, a partir de uma abordagem prática, apresentar o funcionamento do Spring Security, bem como mostrar a integração com JSF e JPA. Ao final, o leitor estará apto a construir aplicações web seguras utilizando essas tecnologias.

Autenticação X Autorização

Antes de entender como a segurança do Spring funciona, é fundamental conhecer dois conceitos: autenticação e autorização. Esses conceitos já foram amplamente discutidos nas edições 87 e 88 da revista, portanto caso o leitor já esteja familiarizado com eles, poderá simplesmente passar para o próximo tópico. No entanto, apresentamos abaixo não apenas os conceitos, mas também a relação deles com o framework Spring Security.

Autenticação

A autenticação é a verificação das credenciais (nome de usuário e senha) da tentativa de conexão. Esse processo consiste no envio de credenciais do cliente para o servidor em um formulário de texto simples ou criptografado usando um protocolo de autenticação.

Como veremos mais adiante, o Spring Security possui várias formas de realizar a autenticação. Podemos utilizar, por exemplo, o formulário de login que é gerado automaticamente pelo framework ou construir o nosso próprio formulário personalizado. Os usuários da aplicação que serão autenticados podem ser definidos diretamente no arquivo XML de configurações do framework ou em um banco de dados, como veremos neste artigo.

Autorização

Autorização é utilizada para verificar se determinado usuário previamente autenticado possui permissão para usar, manipular ou executar o recurso em questão. É a concessão de uso para determinados tipos de serviço, dada a um usuário previamente autenticado.

O Spring Security possui uma abordagem declarativa para a segurança, baseada em roles (papéis). Por exemplo, uma aplicação de uma pousada poderia ter dois roles: um ADMIN, que possui permissão para cadastrar acomodações e reservá-las, e um COMUM, que possui permissão apenas para reservá-las. Dessa forma os usuários que forem utilizar essa aplicação teriam que possuir algum desses roles.

Criando uma aplicação segura com Spring Security 3, JSF 2 (PrimeFaces) e JPA 2

Para demonstrar o funcionamento do Spring Security, bem como a integração com o JSF e JPA, vamos criar uma aplicação web simples. Para esse exemplo foi utilizado a IDE Eclipse Indigo, banco de dados MySQL 5 e Tomcat 7 como servidor de aplicação. Sendo que o leitor poderá utilizar outro banco de dados, IDE ou servidor de aplicação de sua preferência.

Construindo as tabelas

O primeiro passo deve ser a criação das tabelas necessárias para autenticação e autorização no banco de dados, bem como a inserção de alguns dados para teste. "

[...] continue lendo...

Artigos relacionados