Spring security 6

Posted by Túlio Ornelas Wed, 11 Mar 2009 10:48:00 GMT

Fui apresentado ao spring pelo Bruno Pedroso, não sabia muito bem com o que estava mexendo, mas utilizei na época o spring apenas para injetar alguns beans e etc. Continuei com o spring por vários projetos, alguns pessoais, outros da empresa, e hoje posso dizer que se tiver alguma solução para o meu problema que se integre ao spring ou que já exista nele eu não penso duas vezes em utilizar.

Nessa próxima sprint do eplamtax precisaremos de alguns recursos de segurança, e o que iremos utilizar? Spring security é claro!

O Spring security (SS) é um framework Java que provê avançados recursos de autenticação e autorização, além de outras coisas. Muitas pessoas desconhecem mas esse projeto começou em 2003 com o Acegi Security, mas o projeto foi incorporado ao spring e teve seu nome mudado.

Este será um blog técnico, vejamos então como configurar o spring security, para isso já devemos estar com o spring configurado. Para quem utiliza maven devemos configurar o pom.xml com as seguintes dependências:

dependencia 1 dependencia 2

Feito isso devemos configurar o filtro do spring security (SS) no web.xml. Lembrando que os filtros são executados na ordem em que estão configurados no Deployment Descriptor(DD), logo para que você consiga interceptar todos os requests é necessário colocar o filtro do SS como o 1° filtro.

filtro

O spring é totalmente configurável, criamos os beans e etc no arquivo application-Context.xml, mas para manter as coisas organizadas geralmente separamos em vários arquivos. Então vamos criar um arquivo application-Context-security.xml e importá-lo no application-Context.

import no application context

Vamos utilizar o auto-config do SS, para isso devemos utilizar a seguinte tag no application-context-security:

auto config true do Spring security

Para que o SS tenha acesso aos dados do usuário nós iremos criar uma ponte entre o framework e nossa base de dados, o SS possui as interfaces UserDetail e UserDetailService que deveremos implementar em nossos beans. Vejamos como ficaria um bean que implementasse UserDetail:

userDetail

A interface UserDetail possui as seguintes assinaturas:

metodos do userDetail

Note que nosso objeto não possui atributo username nem authorities, pois esses dados estão em outra base de dados da qual Pessoa é carregada. O método getAuthorities retorna um array de GrantedAuthority, esta interface possui apenas um método, getAuthority, que retorna uma string. Uma GrantedAuthority, como o nome bem diz, é uma autorização concedida aquele usuário.

O framework possui uma classe GrantedAuthorityImpl, que possui um construtor com uma String, veja nossa implementação do método getAuthorities:

GrantedAuthorityImpl

Depois de criada a classe que implementa UserDetais devemos implementar a UserDetailService:

A interface UserDetailService possui apenas um método:

metodo do userDetailsService

Esse método será utilizado para carregar seu objeto de usuário pelo SS. Devemos informar ao Spring Security (SS) a classe que implementa o UserDetaiService, as configurações no application-Context-security ficaram da seguinte forma:

Com isso nós já temos o SS instalado e configurado. Para utilizar as taglibs do framework devemos adicionar mais uma dependência no pom.xml:

dependencia taglib

E depois:

taglib

Nosso application-context-security:

application context security

O SS permite que a autenticação seja feita pelo LDAP e permite customizações em toda a sua arquitetura, é um framework bem flexível, mas isso já é assunto para outro blog.

o/

Comments

Leave a comment

  1. Avatar
    André Faria Gomes 3 days later:

    Tenho utilizado o Spring Security há muito tempo, desde que ainda se chamada Acegui Security, sem dúvida, uma ferramenta muito poderosa e completa. Altamente recomendado!

  2. Avatar
    André Faria Gomes 3 days later:

    Tenho utilizado o Spring Security há muito tempo, desde que ainda se chamada Acegui Security, sem dúvida, uma ferramenta muito poderosa e completa. Altamente recomendado!

  3. Avatar
    BrunoPedroso 4 days later:

    Boa mlk!!!

  4. Avatar
    leonardo/leo.almeida@gmail.com 17 days later:

    Falae Tulio,

    Primeiramente excelente artigo… Cara aplicando as configuracoes aqui postadas, a minha validacao funcionou, porem somente pra minhas jsp’s, minhas actions continuam desprotegidas!!! teria como vc me dar um bizu nisso ?

    Abs!!!

    Leo

  5. Avatar
    Tulio 18 days later:

    E ae Leonardo, provavelmente você mapeou o filtro do spring security antes do struts, da uma conferida no mapeamento dos seus filtros.

  6. Avatar
    juniorsatanas 11 months later:

    Teria esses fontes ? pois não conseguir usar aqui !

    web2ajax@gmail.com

    Grande Post !

Comments