JSF - Controle de Acesso

Download Report

Transcript JSF - Controle de Acesso

JSF - Controle de Acesso

FERNANDO FREITAS COSTA ESPECIALISTA EM GESTÃO E DOCÊNCIA UNIVERSITÁRIA

JSF – Controle de Acesso

Antes de iniciarmos este assunto, é importante conhecermos a definição de autenticação e autorização.

- Autenticação:

certificados.

deve verificar se um usuário é ele mesmo através de validação de senhas e/ou

- Autorização:

com base em um usuário identificado, as regras e controles de permissão e acesso serão aplicadas na aplicação/produto e seus recursos.

JSF – Controle de Acesso

Ao desenvolvermos uma apliação em java para web, existem várias maneiras de fazer com que o acesso a determinadas páginas só possa ser autorizado mediante um processo de login com sucesso. Entre elas estão: - Servlet Filter - Phase Listener - Java Authentication and Authorization Service (JAAS) - jGuard - Spring Security - Apache Shiro

Filters

Esta é a forma mais básica e rápida de implementar uma solução deste tipo. O Filter permite a interceptação, manipulação e redirecionamento de todas as requisições HTTP do seu servidor, filtrando o endereço que está sendo acessado. Sendo assim, quando o usuário João acessar aquela URL que é proibida, você pode imediatamente redirecioná-lo para outro endereço, antes que a resposta seja dada ao cliente.

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.

” (Fernando Franzini)

Java Authentication and Authorization Service

“O JAAS (Java Authentication and Authorization Service) é a API padrão do Java para controle de acesso e autorização em aplicações JavaEE. Com JAAS é possível autenticar e validar usuários e certificados, bem como controlar a possibilidade de acesso e/ou utilização de recursos na aplicação (arquivos, diretórios, URLs, conteúdo, etc).”

jGuard

jGuard é uma biblioteca que fornece segurança EASY (autenticação e autorização) para aplicações web em Java. Ele é construído sobre a estrutura estável e madura JAAS, que faz parte da API Java J2SE. jGuard é muito flexível e permite várias maneiras diferentes para configurar esses mecanismos de autenticação e autorização, ou seja, em um banco de dados relacional, arquivos XML ou serviço LDAP. jGuard está sob a licença LGPL open source.

Spring Security

Spring Security é uma estrutura que se concentra em fornecer autenticação e autorização para aplicações Java. Como todos os projetos Spring, o poder real do Spring Security é encontrado em quão facilmente ele pode ser estendido para atender aos requisitos personalizados.

Características: - Suporte abrangente e extensível para autenticação e autorização - Proteção contra ataques, como fixação de sessão, clickjacking, cross site request forgery, etc - Integração API Servlet - Integração opcional com Spring Web MVC - Muito mais ...

Apache Shiro

Apache Shiro é um framework poderoso e fácil de usar que executa autenticação, autorização, criptografia e gerenciamento de sessão. Com a API fácil de entender do Shiro, você pode rapidamente e facilmente proteger qualquer aplicação - desde as menores aplicações móveis até as maiores aplicações web e corporativas.

Utilizando o Phase Listener

Crie uma nova classe dentro do pacote

util

chamada

Autorizador

e faça as importações necessárias.

} import bean.LoginBean; public class Autorizador implements PhaseListener { @Override public void afterPhase(PhaseEvent event) { FacesContext facesContext = event.getFacesContext(); String currentPage = facesContext.getViewRoot().getViewId(); boolean isLoginPage = (currentPage.lastIndexOf("index.xhtml") > -1); HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(true); LoginBean loginBean = (LoginBean) session.getAttribute("loginBean"); if (!isLoginPage && loginBean != null && !loginBean.isAutenticado()){ FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Acesso negado", null facesContext.addMessage("", message); NavigationHandler nh = facesContext.getApplication().getNavigationHandler(); nh.handleNavigation(facesContext, null, "/index.xhtml"); } } @Override public void beforePhase(PhaseEvent arg0) { } @Override public PhaseId getPhaseId() { return PhaseId.RESTORE_VIEW;}

Utilizando o Phase Listener

Altere seu arquivo faces-config.xml e adicione as linhas a seguir antes da tag .

util.Autorizador

Referências

FRANZINI, Fernando.

Autenticação e Autorização.

Disponível em: http://fernandofranzini.wordpress.com/2009/09/09/autenticacao-e-autorizacao/ JEVEAUX, Paulo César M.

Autenticação e Autorização: JAAS com JDBC Realm

. Disponível em: http://jeveaux.com/2009/autenticacao-e-autorizacao-jaas-com-jdbc-realm/

jGuard

. Disponível em: http://jguard.xwiki.com/xwiki/bin/view/Main/WebHome LANHELLAS, Ronaldo.

JSF Filter: Criando um sistema de login com criptografia MD5.

Disponível em: http://www.devmedia.com.br/jsf-filter-criando-um-sistema-de-login-com-criptografia md5/29975#ixzz314wGJJn4

Spring Security

. Disponível em: http://projects.spring.io/spring-security/