Aplicativos web são formados por diversos recursos, como páginas
dinâmicas, estáticas, imagens, downloads, uploads, processos,
relatórios etc. E 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. Autenticação representa a forma como o usuário prova quem realmente ele é, e a Autorização
é utilizada para verificar se o determinado usuário previamente
autenticado possui permissão para usar, manipular ou executar o recurso
em questão. E a grande questão aparece no momento decisivo do projeto:
Como implementar autenticação e autorização em aplicativos java ?
O objetivo deste artigo é levantar a algumas das possibilidades de
implementação da autenticação e da autorização que podem ser feitas em
aplicativos web construídos em java e comentar sobre suas
características e particularidades.
Seguem abaixo as opção levantadas, seus comentários e alguns links
apresentando possibilidades, documentações e tutoriais de possíveis
implementações:
1. Servlet Filter
A forma mais básica, caseira e
rápida de implementar controle de usuários seria a através da
construção e configuração manual de servlet
filters. Existentes desde a versão 2.3 da especificação, os filters
possibilitam a interceptação, manipulação e redirecionamento do pedido
HTTP antes que ele chegue ao seu destino real. Com base em sua
funcionalidade, seria muito simples construir um filtro específico para
o determinado contexto da aplicação fazendo o controle de acesso aos
recursos da aplicação. E para aqueles que prezam a simplicidade mas com
flexibilidade, também podem usar o filter para implementar mecanismos
mais elaborados e flexíveis, combinando os filters com arquivos xml,
deixando a implementação completamente softcode. Seguem abaixo alguns
links apresentando explicações básicas e algumas sugestões de como usar.
1.) http://www.guj.com.br/article.show.logic?id=11
2) http://www.j2eebrasil.com.br/mostrar/25
3.) http://www.devmedia.com.br/articles/viewcomp.asp?comp=5331
4.) http://devmedia.com.br/articles/viewcomp.asp?comp=6161&hl=
5.) http://www.javafree.org/artigo/855399/Autenticacao-e-Autorizacao-CMS.html.
2. Phase Listener
Para as aplicações escritas em JavaServer Faces,
além da opção de usar servlets filters, estas podem se utilizar de um
recurso especifico do JSF chamado de phase listener que é responsável
por interceptar e oferecer mecanismos de manipulações referentes às
mudanças de eventos ocorridas no ciclo de vida da especificação.
Relacionado ao contexto de autenticação e autorização, ela se encaixa
perfeitamente para a implementações de controle de usuários, oferecendo
ao projetista da aplicação mais uma opção arquitetural. Seguem abaixo
links sobre opções de implementações:
1.) http://www.rodrigolazoti.com.br/?p=56
2.) http://ciromacedo.blogspot.com/2008/06/controle-de-acesso-no-jsf.html
3.) http://archsofty.blogspot.com/2008/11/login-autenticao-e-autorizao-usando.html
3. JAAS
Define um modelo padrão JEE de regras de
como a aplicação web pode definir e gerenciar controle de acesso.
Baseado em especificação e implementado por todos containers
compatíveis, o JAAS é a solução 100% portável indicada pela
especificação para ser usada. Nele, existem diferentes níveis em opções
de autenticação que são baseado na definição ROLES que são
resumidamente grupos de usuários. A base de dados dos usuários
credenciados pode estar em arquivos xml, bancos de dados relacionais,
ldaps etc. Seguem abaixo alguns links sobre utilização dele:
1.) http://www.paulovittor23.org/?p=15
2.) http://www.scribd.com/doc/7571690/Java-Security-Como-Usar-JAAS-Com-Tomcat-6
3.) http://www.jeveaux.com/blog/2009/autenticacao-e-autorizacao-jaas-com-jdbc-realm/
4.) http://tomcat.apache.org/tomcat-6.0-doc/realm-howto.html
4. jGuard
Framework proprietário construído em
cima do JAAS oferecendo alguns automatismos, facilidades e integrações
interessantes com alguns componentes JEE sendo um boa opção a ser
considerada. Segue abaixo o link para o site oficial que contém todas
as informações:
1. ) http://jguard.net/
5.Spring Security
Um dos maiores frameworks da
atualidade que oferece um leque muito amplo em recursos para se
implementar autenticação e autorização. Na minha opinião é a solução
mais profissional, mais difícil e complexa sendo que o framework oferece
uma variedade incrível de opções arquiteturais. Segue abaixo o link
para o site oficial que contém todas as informações e o livro de
referência:
1.) http://static.springframework.org/spring-security/site/
O objetivo do artigo não é apontar a “melhor” ou “ideal” solução para uma
aplicação, mas sim apresentar algumas das possibilidades (das mais
simples às mais sofisticadas) ficando, assim, a cargo dos projetistas
responsáveis pela aplicação julgar e selecionar aquela que lhe melhor
encaixe no seu determinado escopo/projeto em específico. Por hoje é isso, galera, até a próxima! =D