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


dfaajaasp1fig01.png 

 

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