Autenticação e Autorização sem JAAS utilizando hierarquia de Perfis de Acesso – Parte I
Solução simples utilizando filtros, file properties, classes singleton para uso em sistemas web.
Pré-Requisitos:
1) Java SE 5 (1.5) plenamente instalado e configurado
2) Eclipse ou a IDE de sua Preferência
Características da Solução
- Autenticação e autorização sem uso de JAAS
- Possibilidade de Modificar a autorização de páginas sem parar o sistema
- Não necessita de acesso a banco de dados
- Baseado em hierarquia, por exemplo: perfil consulta < perfil comum < administrador, ou seja, o “perfil consulta” NÂO PODE ACESSAR páginas do “perfil comum” e estes dois NÂO PODEM ACESSAR as páginas do administrador.
Lógica da Hierarquia de Perfis de Acessos
Para implementar a lógica de hierarquia a solução chega a ser boba! ;) utilizar números! ;)
Como exemplo utilizaremos três perfis de acesso: Perfil Consulta – 10, Perfil Comum – 20, Perfil Administrador – 99. Aconselho utilizar múltiplos de 10, pois se for necessário criar um novo perfil depois que o sistema estiver em produção, você terá várias opções e não precisará modificar os outros perfis de acesso, portanto a lógica de hierarquia ficará: 10 < 20 < 99 .
Classes e Arquivos necessários
-acess.properties (informa ao sistema as páginas e seus perfis mínimos de acesso)
- AcessoSingleton.java (classe singleton “única” representando em memória o arquivo de properties acima, evitando abrir e fechar arquivo a cada requisição)
- LogoffServlet.java (invalida a sessão)
- SecurityFilter.java (filtro responsável por permitir ou negar acesso as páginas do sistema)
- usuarioConsulta.jsp (página que será acessado por todos os perfis, pois é o perfil mais baixo da hierarquia)
- usuarioComum.jsp (página que será acessada a partir do perfil “usuario comum”)
- administrador.jsp (página que será acessada apenas pelo administrador, pois este perfil representa o topo da hierarquia)
- User.java (classe representando um usuário no sistema utilizado pelo filtro SecurityFilter.java
- JSFUtils.java ( classe de utilitários muitos úteis para quem trabalha com Java Server Faces
- index.jsp ( tela apresentada quando o usuário autentica no sistema )
- login.jsp (form para entrada do login e senha)
Diagrama de Classes da Solução
A seguir exemplo do arquivo txt de properties “acess.properties”:
-- Perfis: 99:Administrador 20:Comum 10:Consulta --
/usuarioConsulta.jsp=10
/usuarioComum.jsp=20
/administrador.jsp=99
posso enviar via email o código fonte da solução pronta para os apressados ;)
Fim da Parte 1 Até a próxima. ;)
Gostaria de ouvir seus comentários e críticas construtivas ;)
OBS: Este artigo, bem como o código-fonte, é de livre divulgação, desde que, citada a fonte.
Dave Fernandes – Analista Programador Java - UFPA
Blog: http://consubr.blogspot.com
Email: consubr@yahoo.com.br