Atenção: esse artigo tem dois vídeos complementares.
Clique e assista o primeiro!
Clique e assista o segundo!
Spring Security 3 – Parte 1
Este artigo apresenta as novidades da versão 3 do Spring Security e descreve as principais modificações necessárias para realizar a migração da versão 2.x do framework.
Para que serve:
A nova versão do Spring Security serve para trazer menos dependências de pacotes, desacoplar as configurações, melhorar o apoio ao OpenID e permitir o uso do Kerberos nas suas aplicações. A migração da versão 2.x poderá servir para melhorar o desempenho dos aplicativos e permitir a utilização das novidades da versão 3.
Em que situação o tema é útil:
O tema é útil para os desenvolvedores que utilizam o Spring Security 2.x e desejam migrá-lo. Além disso, quem desenvolve aplicações web Java e se preocupa com a segurança, terá a disposição as últimas técnicas e extensões para auxiliar a resolver problemas específicos como, por exemplo, regras complexas de controle de acesso ou autenticação através de um servidor Kerberos.
Spring Security 3 – Parte 2:
O Spring Security é um framework que facilita a implementação de políticas de segurança nas aplicações. A sua nova versão trouxe diversas melhorias que serão apresentadas, dentre elas: uso da linguagem de expressão SpEL para controle de acesso das páginas, novos atributos (url, method, access) para a tag <authorize> da Spring Tag Library, melhorias no suporte ao OpenID com Attribute Exchange e a inclusão de uma extensão que permite a autenticação através do Kerberos. Para finalizar, conheceremos as principais mudanças para migrar da versão 2.x, a maioria delas relacionadas às configurações do arquivo XML do framework.
Na Edição 87 da Java Magazine publicamos a primeira parte de uma minissérie de dois artigos que tem como objetivo apresentar as novidades da versão 3 do framework de segurança Spring Security, assim como ensinar a utilizar e migrar para esta nova versão.
Na primeira parte abordamos os seguintes tópicos:
• Apresentação e diferenciação de dois conceitos básicos relacionados à segurança das aplicações: autenticação e autorização. A autenticação é uma maneira de tornar possível o acesso de um usuário a uma área restrita de uma aplicação. A autorização define permissões de acesso para as funcionalidades presentes nesta área restrita da aplicação;
• Criação de um aplicativo seguro utilizando a nova versão do Spring Security. Descrevemos como são realizadas as configurações necessárias no arquivo XML de segurança, responsáveis pelo funcionamento correto do framework. Entre elas, descrições sobre o banco de dados e as consultas necessárias para obter os usuários com permissão de acesso e suas autorizações;
• Evolução da aplicação construída utilizando uma tecnologia suportada pelo framework chamada OpenID. Esta tecnologia foi criada para permitir aos usuários um login único e seguro que possa ser usado em diversos sites da internet. Sua integração na aplicação exigiu novas configurações no arquivo XML de segurança, a inclusão de três bibliotecas específicas e algumas mudanças na página de login, tendo como objetivo criar um campo específico de login para os usuários que forem logar utilizando-o.
Nesta segunda parte, continuaremos a apresentar o Spring Security 3, focando nas principais novidades e nas alterações necessárias para migrar as aplicações que já utilizavam o Spring Security 2.x.
Entre as novidades, algumas que fazem parte do escopo deste artigo são: o uso da Spring Expression Language (SpEL) para auxiliar na definição de regras de acesso, novas maneiras de utilizar a tag <authorize> para permitir a renderização do conteúdo das páginas, melhorias para o uso do OpenID e modificações nas extensões suportadas.
A aplicação web com Spring Security 3, desenvolvida na primeira parte, será utilizada em certos momentos para exemplificar o uso de algumas novidades.
Novidades do Spring Security 3
A nova versão do framework trouxe diversas mudanças e melhorias para apoiar o desenvolvedor na garantia da segurança de suas aplicações. Conheceremos a seguir quais foram estas melhorias para que você possa decidir se já é o momento de utilizá-las.
Configuração de acesso utilizando SpEL
O SpEL é uma linguagem de expressão introduzida pelo Spring 3 que trouxe vários benefícios para o Spring Security. O seu principal objetivo é auxiliar na construção de novas regras para autorização de acesso a páginas e funcionalidades da aplicação.
O leitor pode utilizar o SpEL para obter uma maneira de acesso criteriosa nas suas aplicações. Podemos, por exemplo, realizar o controle de acesso através de um dos seus métodos, o hasAnyRole(), que é capaz de permitir acesso a usuários com autorizações distintas. Caso o objetivo seja que determinada página possa ser acessada por usuários com as permissões ROLE_ADMIN e ROLE_USER, poderíamos utilizá-lo assim: hasAnyRole(‘ROLE_ADMIN’,’ROLE_USER’).
Para ativar o uso do SpEL na sua aplicação, você deve adicionar o atributo use-expressions com o valor “true” na configuração do elemento <http>. Isso deve ser feito no arquivo de configuração applicationContext.xml, criado durante a primeira parte do artigo, da seguinte maneira:
<http use-expressions="true" ... >
Esta configuração irá modificar o comportamento do atributo access da tag <intercept-url>, passando a permitir somente expressões do SpEL no controle das URLs.
Para testar o método hasAnyRole() na aplicação, podemos modificar a tag <intercept-url> que controla o acesso ao diretório paginas, substituindo o ROLE_USER pelo método hasAnyRole(‘ROLE_ADMIN’,’ROLE_USER’), passando a permitir que usuários com os papéis ROLE_ADMIN e ROLE_USER possam visualizar as páginas deste diretório:
<http auto-config="true" access-denied-page="/negado.jsp" use-expressions="true">
…
<intercept-url pattern="/paginas/**" access=" hasAnyRole(‘ROLE_ADMIN’,’ROLE_USER’)"/>
</http>
Os métodos e pseudo-propriedades do SpEL disponíveis para uso no Spring Security 3 são apresentados nas Tabelas 1 e 2. Nestas tabelas, a coluna Exemplo ilustra a utilização das expressões do SpEL no atributo access de uma tag <intercept-url>.