Autenticação e Autorização de Soluções Web

Postado em Atualizado em

as-pagina-3Aplicativos 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 de 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 post é levantar a algumas das possibilidades de implementação da autenticação e autorização que podem ser feitas em aplicativos web construídos em java e comentar sobre suas características e particularidades.
Segue 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 especifico 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 filtes com arquivos xml, deixando a implementação completamente softcode. Segue abaixo alguns links apresentando explicações básicas e algumas sugestões de como usar.

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 da phase listener que é responsável por interceptar e oferecer mecanismos de manipulações referentes as 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, oferendo ao projetista da aplicação mais uma opção arquitetural. Segue abaixo links sobre opções de implementações:

3. Container Managed Security

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. O base de dados dos usuários credenciados podem estar em arquivos xml, bancos de dados relacionais, ldaps etc. Segue abaixo alguns links sobre utilização dele:

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:

5. Spring Security

Framework proprietário que oferece uma variedade incrível de opções arquiteturais e features de complemento. Muito poderoso, flexível, fácil e amplamente utilizado pela comunidade Java. Segue abaixo o link para o site oficial que contém todas as informações e o livro de referência:

6. Apache Shiro

Framework proprietário que oferece uma variedade incrível de opções arquiteturais e features de complemento. Segue abaixo o link para o site oficial que contém todas as informações:

Conclusão

Objetivo do post não é apontar a “melhor” ou “ideal” para uma solução, mas sim apresentar algumas das possibilidades das mais simples, as mais sofisticadas ficando assim, a cargo dos projetistas responsáveis julgar e selecionar aquela que lhe melhor encaixe no seu determinado escopo/projeto em especifico.

“Sê forte e corajoso; não temas, nem te espantes, porque o SENHOR, teu Deus, é contigo por onde quer que andares.”  Josué 1:9

Anúncios