Anda di halaman 1dari 6

10/10/12

Java Simples Spring Security 3 -> Deixando sua aplicao Web segura!

Spring Security 3 -> Deixando sua aplicao Web segura!

Continuando com o assunto dos posts anteriores, vamos falar sobre mais uma vantagem do Spring Framework: o Spring Security. O Spring Security antes era conhecido como Acegi Security pois era um projeto paralelo ao Spring Framework e aos poucos foi integrado a ele. Quando eu digo integrado eu quero dizer que ele (Acegi Security) continuou sendo desenvolvido baseado no Spring, ou seja, ele funciona perfeitamente sobre o container do Spring. H algum tempo o nome do projeto foi alterado para Spring Security pois ele acabou entrando para a famlia do Spring (pssimo trocadilho no ). Mesmo com a integrao, quando voc baixa o Spring Framework o Spring Security no est includo. Precisamos baix-lo separadamente. O Spring Security utiliza uma biblioteca externa para logging das suas funes e essa biblioteca tambm no vem no download do projeto, portanto temos que baixar o Apache Commons Logging tambm. Apenas mais um detalhe: se voc acompanhou os posts anteriores sobre o Spring Framework voc notou que a verso do framework era a 2.5 (que vem nativamente com o NetBeans 6.8), porm neste post eu j irei utilizar a mais nova verso: 3.0 pois o Spring Security 3.0 (verso melhor e mais fcil de usar do que a anterior) s roda em cima do Spring Framework 3.0. Ahh, vou trocar a IDE tambm, ao invs de utilizar o NetBeans eu irei utilizar o SpringSource Tool Suite (Eclipse que o pessoal da SpringSource deu uma turbinada para facilitar a vida de quem usa o Spring). Seguem os links para os downloads necessrios: Spring Framework 3.0 Spring Security 3.0 Apache Commons Logging 1.1.1 SpringSource Tool Suite (caso queira conhecer a ferramenta) Nosso escopo para a aplicao: teremos dois tipos de usurios na aplicao: Funcionrios e Gerentes. Os funcionrios tem acesso apenas rea restrita a funcionrios e os gerentes tem acesso tanto rea de funcionrios (mesmo sendo gerentes eles tambm so funcionrios poxa) quanto rea restrita aos gerentes. A autenticao ser baseada nos dados contidos em uma tabela no banco de dados, ento para o usurio possuir acesso ele deve estar cadastrado no banco de dados. OBS: Tambm ser necessrio fazer o download do driver JDBC para a conexo com o banco de dados que voc for utilizar. Eu irei utilizar o MySQL, caso voc tambm use ele pode pegar o driver aqui. Nossa tabela que conter os dados dos usurios ser essa:
CET TBE`sr`( RAE AL ues `srae VRHR1)CLAEuf_ncd_iNTNL, uenm` ACA(5 OLT t8uioec O UL `asod VRHR4)CLAEuf_ncd_iDFUTNL, pswr` ACA(0 OLT t8uioec EAL UL `uhrt`VRHR3)CLAEuf_ncd_iDFUTNL, atoiy ACA(0 OLT t8uioec EAL UL PIAYKY (uenm` RMR E `srae) )

Os campos s esto em ingls porque eu fiquei com preguia de mudar para portugus, desculpem.. Com o banco de dados pronto ns j podemos por a mo na massa! Criei um novo projeto (Dynamic Web Project) no STS (SpringSource Tool Suite) chamado ControleAcesso e a primeira coisa que fiz foi incluir as dependncias no classpath, ou seja, todos os .jar encontrados na pasta /dist dos releases do Spring Framework e do Spring Security e tambm o .jar do Apache Commons Logging e o .jar o driver JDBC do MySQL:

OBS: Adicionei tambm os .jar referentes a JSTL para poder utiliz-la nos JSPs. Estrutura da Aplicao Agora vou criar a estrutura bsica de arquivos para a nossa aplicao:

www.javasimples.com.br/spring-2/spring-security-3-deixando-sua-aplicacao-web-segura

1/6

10/10/12

Java Simples Spring Security 3 -> Deixando sua aplicao Web segura!

Uma estrutura bem bsica onde ns podemos ver que as pginas que esto na raiz da aplicao so as pginas de login, index e uma responsvel por mostrar uma mensagem de acesso negado caso o usurio tente acessar uma pgina que no pode. OBS: Essa a estrutura final da aplicao, chegaremos at ela aos poucos durante o decorrer do post. Depois existem mais duas pastas (funcionario e gerente) representando as partes da aplicao que somente usurios autenticados podem acessar. Nestas pastas eu coloquei apenas um index para confirmar que tivemos acesso ou no a pgina. Vamos comear a ver as pginas ento: index.jsp (raz):
<@pg lnug=jv"cnetye"ethm;castIO85-"pgEcdn=IO85-"> % ae agae"aa otnTp=tx/tl hre=S-891 aenoig"S-891% <DCYEhm PBI "/WC/T HM 40 Tastoa/E""tp/www.r/Rhm4loedd> !OTP tl ULC -/3/DD TL .1 rniinl/N ht:/w.3ogT/tl/os.t" <tl hm> <ed ha> <eaht-qi=CnetTp"cnet"ethm;castIO85-" mt tpeuv"otn-ye otn=tx/tl hre=S-891> <il>oePg<tte tteHm ae/il> <ha> /ed <oy bd> <1Pgn d Ba Vna<h> h>ia e os ids/1 < he=.fninro>rad Fninro<a a rf"/ucoai"e e ucois/> <r> b/ < he=.grne>rad Grne<a a rf"/eet"e e eets/> <bd> /oy <hm> /tl

A pgina inicial da aplicao apenas d as boas vindas ao usurio e mostra os possveis caminhos para ele: rea de funcionrios ou rea de gerentes. funcionario/index.jsp
<@pg lnug=jv"cnetye"ethm;castIO85-"pgEcdn=IO85-"> % ae agae"aa otnTp=tx/tl hre=S-891 aenoig"S-891% <DCYEhm PBI "/WC/T HM 40 Tastoa/E""tp/www.r/Rhm4loedd> !OTP tl ULC -/3/DD TL .1 rniinl/N ht:/w.3ogT/tl/os.t" <tl hm> <ed ha> <eaht-qi=CnetTp"cnet"ethm;castIO85-" mt tpeuv"otn-ye otn=tx/tl hre=S-891> <il>rad Fninro/il> ttee o ucoi<tte <ha> /ed <oy bd> <1BmVnoae d Fninro/1 h>e id ra o ucoi<h> < he=./ne.s"Rtra pr aPgn Iiil/> a rf".idxjp>eonr aa ia nca<a <bd> /oy <hm> /tl

gerente/index.jsp
<@pg lnug=jv"cnetye"ethm;castIO85-"pgEcdn=IO85-"> % ae agae"aa otnTp=tx/tl hre=S-891 aenoig"S-891% <DCYEhm PBI "/WC/T HM 40 Tastoa/E""tp/www.r/Rhm4loedd> !OTP tl ULC -/3/DD TL .1 rniinl/N ht:/w.3ogT/tl/os.t" <tl hm> <ed ha> <eaht-qi=CnetTp"cnet"ethm;castIO85-" mt tpeuv"otn-ye otn=tx/tl hre=S-891> <il>rad Grne/il> ttee o eet<tte <ha> /ed <oy bd> <1BmVnoae d Grne/1 h>e id ra o eet<h> < he=./ne.s"Rtra pr aPgn Iiil/> a rf".idxjp>eonr aa ia nca<a <bd> /oy <hm> /tl

Pronto, esta a estrutura bsica da aplicao, caso voc rode ela agora voc vai conseguir navegar livremente pelas reas que devem ser restritas (funcionrios e gerentes). Adicionando o Spring na aplicao Prximo passo por o Spring para funcionar nessa nossa aplicao. Como as bibliotecas j esto no classpath ento vamos criar o arquivo de configurao do Spring: dentro da pasta WEB-INF crie um xml chamado applicationContext. Caso esteja usando o STS basta clicar com o boto direito na pasta WEB-INF, ir em New e depois em Other. V na pasta Spring e selecione Spring Bean Configuration File, na proxima janela digite o nome (applicationContext) e na proxima janela voc pode escolher os namespaces que quer usar no arquivo ento deixe selecionado os seguintes: beans e sec. Quando selecionar o sec voc ainda deve especificar o XSD do Spring Framework 3.0. Fazendo isso a IDE j vai criar a estrutura bsica do arquivo de configurao com todos os namespaces.
www.javasimples.com.br/spring-2/spring-security-3-deixando-sua-aplicacao-web-segura 2/6

10/10/12

Java Simples Spring Security 3 -> Deixando sua aplicao Web segura!

O applicationContext.xml deve ficar parecido com este (j vou adiantar um detalhe e declarar o dataSource responsvel por se comunicar com o banco de dados onde est a tabela com os usurios e suas autenticaes):

<xlvrin"."ecdn=UF8? ?m eso=10 noig"T-"> <en xls"tp/wwsrnfaeokogshm/en" bas mn=ht:/w.pigrmwr.r/ceabas xlsxi"tp/www.r/01XLceaisac"xlssc"tp/wwsrnfaeokogshm/euiy mn:s=ht:/w.3og20/MShm-ntne mn:e=ht:/w.pigrmwr.r/ceascrt" xishmLcto=ht:/w.pigrmwr.r/ceabasht:/w.pigrmwr.r/ceabassrn-en.s ht:/ s:ceaoain"tp/wwsrnfaeokogshm/en tp/wwsrnfaeokogshm/en/pigbasxd tp/w <- dt suc -> !- aa ore <eni=dtSuc"cas"r.pigrmwr.dcdtsuc.rvraaeDtSuc" ba d"aaore ls=ogsrnfaeokjb.aaoreDieMngraaore> <rprynm=dieCasae vle"o.yq.dcDie"/ poet ae"rvrlsNm" au=cmmsljb.rvr > <rprynm=ul vle"dcmsl/lclotsrn_euiy / poet ae"r" au=jb:yq:/oahs/pigscrt" > <rprynm=uenm"vle"ot / poet ae"srae au=ro" > <rprynm=pswr"vle"2"/ poet ae"asod au=13 > <ba> /en <bas /en>

Para concluir esta etapa basta fazer uma pequena modificao no web.xml para adicionar um listener que o Spring tem para facilitar nossa vida. Sempre que a aplicao vai comear a funcionar esse listener procura pelo arquivo applicationContext.xml e carrega o Spring e os beans e configuraes definidos nesse arquivo. OBS: Tem como configurar o listener para receber uma lista com o nome de vrios arquivos de configurao (caso voc goste de separar as configuraes em arquivos separados) e ento ele carrega todos, porm esse um assunto para outro post (ou uma rpida busca no google ). Basta adicionar a seguinte tag no web.xml:
<itnr lsee> <itnrcasogsrnfaeokwbcnetCnetodritnr/itnrcas lsee-ls>r.pigrmwr.e.otx.otxLaeLsee<lsee-ls> <lsee> /itnr

OK, caso voc execute a aplicao agora e ficar atento s mensagens de LOG voc ir ver o Spring carregando e o dataSource sendo configurado, ou seja, tudo indo bem at aqui! Alis, ver tambm que voc consegue facilmente acessar as reas que deveriam ser restritas. Tudo certo at aqui. Adicionando segurana na aplicao Vamos comear a fazer algumas modificaes para podermos adicionar a segurana na nossa aplicao. Primeiro de tudo vamos adicionar um novo filtro no nosso web.xml. Esse filtro ser responsvel por interceptar todas as requisies aplicaco, verificar se o usurio possui acesso e liberar a requisio normalmente ou ento mostrar um erro. Segue o XML necessrio para a declarao e configurao do filtro:
<itr fle> <itrnm>pigeuiyitrhi<fle-ae fle-aesrnScrtFleCan/itrnm> <itrcasogsrnfaeokwbfle.eeaigitrrx<fle-ls> fle-ls>r.pigrmwr.e.itrDlgtnFlePoy/itrcas <fle> /itr <itrmpig fle-apn> <itrnm>pigeuiyitrhi<fle-ae fle-aesrnScrtFleCan/itrnm> <r-atr>*/r-atr> ulpten/<ulpten <fle-apn> /itrmpig

A partir de agora todas as requisies sero interceptadas pelo Spring, s falta deixar bem claro para o Spring Security quem pode fazer o que na aplicao.
www.javasimples.com.br/spring-2/spring-security-3-deixando-sua-aplicacao-web-segura 3/6

10/10/12

Java Simples Spring Security 3 -> Deixando sua aplicao Web segura!

Antes de continuar com o processo de autenticao de usurios ns precisamos ter o usurios concorda? hehehe Vou adicionar agora dois usurios para nossa aplicao: um gerente e um funcionrio comum.
ISR IT uesuenm,asodatoiy VLE(fn''uc,RL_UC) NET NO sr(sraepswr,uhrt) AUS'uc,fn''OEFN'; ISR IT uesuenm,asodatoiy VLE(gr,gr,RL_E'; NET NO sr(sraepswr,uhrt) AUS'e''e''OEGR)

Agora j temos o usurio func e o usurio ger para poder testar na nossa aplicao. Repare que o atributo authority foi preenchido com ROLE_FUNC e ROLE_GER. Isso ocorre porque o Spring Security sempre busca um prefixo no tipo de autorizao de cada usurio e o padro este (ROLE_). Logo mais mostrarei como trocar para um prefixo a sua escolha como FUNCAO_, AUTH_ ou o que voc quiser. Continuando: toda a autenticao ser feita com a declarao de apenas dois beans no applicationContext.xml. Vamos ao primeiro:
<e:tpat-ofg"re> scht uocni=tu" <e:omlgnlgnpg=/oi.s"atetcto-alr-r=/oi.s?roivld"/ scfr-oi oi-ae"lgnjp uhniainfiueul"lgnjper=naio > <e:necp-r pten"fninro*"acs=RL_UCRL_E"/ scitretul atr=/ucoai/* ces"OEFN,OEGR > <e:necp-r pten"grne*"acs=RL_E"/ scitretul atr=/eet/* ces"OEGR > <e:necp-r pten"*"acs=I_UHNIAE_NNMUL"/ scitretul atr=/* ces"SATETCTDAOYOSY > <scht> /e:tp

OBS: O prefixo das tags dos Spring Security sec pois foi o namespace declarado para ele na tag root : xmlns:sec= A tag serve para definir os parmetros bsicos para o Spring Security saber o que fazer com as requisies. O atributo auto-config nos poupa de definir todas as tags necessrias para o funciomento correto, sendo assim, s precisamos nos focar no que realmente faz parte da nossa aplicao, como o que eu coloquei: formulrio de login e URLs que sero interceptadas. Cada tag < intercept-url > identifica uma URL ou um padro de URLs e qual a permisso o usurio deve ter para acessar tal (tais) URL (s). A primeira tag diz que todas as URLs que comecem com /funcionario/ s podero ser acessadas por usurios que tiverem autorizao ROLE_FUNC ou ROLE_GER. J a segunda restringe o acesso a todas URLs que comecem com /gerente/ para usurios que estiverem autorizados com ROLE_GER. E a ltima tag define que qualquer outra URL que ainda no foi definida anteriormente pode ser acessada sem autenticao nenhuma. Na tag < form-login> foram definidos alguns atributos meio bsicos: login-page informando qual a pgina de login e authentication-failure-url informando qual a pgina que ser exibida caso o login falhe (neste caso eu coloquei a mesma pgina de login e apenas enviei um parmetro via GET para podermos saber quando ocorre o erro). Segue a pgina de login e como deve ser o formulrio:
<@aecnetye"ethm"pgEcdn=UF8% %pg otnTp=tx/tl aenoig"T-"> <@tgi ui"tp/jv.u.o/s/slcr"pei=c % % alb r=ht:/aasncmjpjt/oe rfx"" > <DCYEHM PBI "/WC/T HM 40 Tastoa/E""tp/www.r/Rhm4loedd> !OTP TL ULC -/3/DD TL .1 rniinl/N ht:/w.3ogT/tl/os.t" <tl hm> <ed ha> <eaht-qi=CnetTp"cnet"ethm;castUF8> mt tpeuv"otn-ye otn=tx/tl hre=T-" <il>uetco/il> tteAtnia<tte <ha> /ed <oy bd> <:fts=$prmer = 'naio}> ci et"{aa.ro = ivld'" Uuroeo snaivlds<r>b/ si /u eh nio!b/<r> <ci> /:f <omato=jsrn_euiycek mto=ps" fr cin"_pigscrt_hc" ehd"ot> Uuro <nu tp=tx"nm=juenm"/<r/ si: ipt ye"et ae"_srae >b > Sna <nu tp=tx"nm=jpswr"<r/ eh: ipt ye"et ae"_asod>b > <nu tp=sbi"vle"fta Lgn> ipt ye"umt au=Eeur oi" <fr> /om <r/<r/ b >b > < he=idxjp>eonrpr aPgn Iiil/> a rf"ne.s"Rtra aa ia nca<a <bd> /oy <hm> /tl

Caso a pgina seja carregada com o parmetro erro contendo o valor invalido ento um erro ser mostrado (fiz usando JSTL). E o formulrio de login deve ser enviado para a URL j_spring_security_check passando como parmetros o nome de usurio (j_username) e a senha (j_password). Esses nomes so padres do Spring Framework e bem fceis de serem seguidos. O processo de login simples assim e encerra as explicaes sobre o primeiro bean responsvel pela segurana de nossa aplicao. Vamos ao prximo bean:
<e:uhniainmngr scatetcto-aae> <e:uhniainpoie> scatetcto-rvdr <e:dcue-evc dt-orerf"aaore scjb-srsrie aasuc-e=dtSuc" uesb-sraeqey"EETuenm,pswr,'re a eal FO uesWEEuenm=" sr-yuenm-ur=SLC srae asod tu' s nbe RM sr HR srae? atoiisb-sraeqey"EETuenm,atoiyFO uesWEEuenm="/ uhrte-yuenm-ur=SLC srae uhrt RM sr HR srae? > <scatetcto-rvdr /e:uhniainpoie> <scatetcto-aae> /e:uhniainmngr

Dentro do < authentication-manager > onde especificamos onde o Spring Security deve buscar os dados para verificar se um usurio est autenticado ou no. Como j tinhamos previsto desde o comeo do post que iramos fazer a autenticao atravs do banco de dados, utilizamos a tag < jdbc-user-service-data-source > passando o dataSource que conecta no banco que contm nossos usurios. Quando o Spring Security tenta autenticar um usurio com dados vindos de um banco de dados ele possui um padro: para cada usurio devem ser retornados 3 campos: username, password e enable, sendo eles usurio, senha e o ltimo dizendo se o usurio est habilitado ou no. Para no ficarmos presos no padro de tabelas que o Spring Security sugere para usurios, ns podemos escrever quais querys ele ir utilizar para recuperar os dados que ele precisa. O atributo users-by-username-query deve trazer os dados do usurio (username, password e enabled) selecionado pelo nome de usurio e o atributo authorities-byusername-query deve trazer o nome de usurio e o tipo de autenticao (username, authority) tambm selecionado pelo nome de usurio.
www.javasimples.com.br/spring-2/spring-security-3-deixando-sua-aplicacao-web-segura 4/6

10/10/12

Java Simples Spring Security 3 -> Deixando sua aplicao Web segura!

Com essa flexibilidade de configurao possvel utilizar qualquer estrutura de tabelas responsvel por armazenar os usurios. E pronto! Agora nossa aplicao web j possui um mecanismo de segurana para restringir o acesso apenas a usurios autenticados! Executando a aplicao agora voc ver que s consegue acessar a rea de funcionrios autenticando-se como um funcionrio ou gerente, exatamente como havamos configurado. Mudar o prefixo do tipo de autorizao Para mudar o prefixo padro (ROLE_) podemos setar o atributo role-prefix da tag < jdbc-user-service-data-source >.
<e:uhniainmngr scatetcto-aae> <e:uhniainpoie> scatetcto-rvdr <e:dcue-evc dt-orerf"aaore rl-rfx"IO" scjb-srsrie aasuc-e=dtSuc" oepei=TP_ uesb-sraeqey"EETuenm,pswr,'re a eal FO uesWEEuenm=" sr-yuenm-ur=SLC srae asod tu' s nbe RM sr HR srae? atoiisb-sraeqey"EETuenm,atoiyFO uesWEEuenm="/ uhrte-yuenm-ur=SLC srae uhrt RM sr HR srae? > <scatetcto-rvdr /e:uhniainpoie> <scatetcto-aae> /e:uhniainmngr

Com essa configurao os prefixos devem ser TIPO_. Ex de tipos de autorizao: TIPO_GERENTE e TIPO_FUNCIONARIO. Logout Para o usurio efetuar logout no sistema basta acessar a URL j_spring_security_logout na raiz da aplicao. Ex: para colocar um link Sair na pgina /funcionario/index.jsp devemos colocar assim:
< he=./_pigscrt_oot>ar/> a rf".jsrn_euiylgu"Si<a.

Porque a url deve ser acessada na raiz da aplicao web: /Aplicacao/j_spring_security_logout e no /Aplicacao/funcionario/j_spring_security_logout. Acesso Negado Caso o usurio logado como funcionrio queira acessar a seo restrita a gerentes ele ir receber uma pgina de erro bem estranha (que o servidor de aplicativos gera). Para mostrar uma pgina mais amigvel avisando que o usurio no tem acesso a uma certa rea basta preencher o atributo access-denied-page da tag < http >.
<e:tpat-ofg"re acs-eidpg=/eaojp> scht uocni=tu" cesdne-ae"ngd.s" <e:omlgnlgnpg=/oi.s"atetcto-alr-r=/oi.s?roivld"/ scfr-oi oi-ae"lgnjp uhniainfiueul"lgnjper=naio > <e:necp-r pten"fninro*"acs=RL_UCRL_E"/ scitretul atr=/ucoai/* ces"OEFN,OEGR > <e:necp-r pten"grne*"acs=RL_E"/ scitretul atr=/eet/* ces"OEGR > <e:necp-r pten"*"acs=I_UHNIAE_NNMUL"/ scitretul atr=/* ces"SATETCTDAOYOSY > <scht> /e:tp

negado.jsp:
<tl hm> <ed ha> <eaht-qi=CnetTp"cnet"ethm;castUF8> mt tpeuv"otn-ye otn=tx/tl hre=T-" <il>csoNgd<tte tteAes eao/il> <ha> /ed <oy bd> <1Aes Ngd<h> h>cso eao/1 < he=./ne.s"Pgn Iiil/> a rf".idxjp>ia nca<a <bd> /oy <hm> /tl

Encriptao da senha Caso queira que a senha seja protegida por algum algoritmo de encriptao basta adicionar uma nova tag no authentication-manager:
<e:uhniainmngr scatetcto-aae> <e:uhniainpoie> scatetcto-rvdr <e:asodecdrhs=m5/ scpswr-noe ah"d"> <e:dcue-evc dt-orerf"aaore rl-rfx"IO" scjb-srsrie aasuc-e=dtSuc" oepei=TP_ uesb-sraeqey"EETuenm,pswr,'re a eal FO uesWEEuenm=" sr-yuenm-ur=SLC srae asod tu' s nbe RM sr HR srae? atoiisb-sraeqey"EETuenm,atoiyFO uesWEEuenm="/ uhrte-yuenm-ur=SLC srae uhrt RM sr HR srae? > <scatetcto-rvdr /e:uhniainpoie> <scatetcto-aae> /e:uhniainmngr

Neste caso o algoritmo usado o MD5, poderia ser o MD4, SHA, entre outros. Para inserir o usurio com uma senha criptografada com MD5 no MySQL fica assim:
ISR IT uesuenm,asodatoiy VLE(fn'M5'uc)'OEFN'; NET NO sr(sraepswr,uhrt) AUS'uc,D(fn',RL_UC)

Exibindo partes da pgina apenas para usurios autorizados UPDATE(19/03/2011) Respondendo a pergunta que nosso leitor Gerson postou nos comentrios vamos ver como podemos restringir partes da pgina com base na autorizao que o usurio possui. A primeira coisa a fazer ter certeza de que a biblioteca spring-security-taglibs-3.x.x.jar est no classpath da aplicao. Depois temos que importar as taglibs do Spring Security na pgina onde queremos us-la e ento utiliz-las de fato. Referncia das taglibs do Spring Security. Eu alterei a pgina /funcionario/index.jsp para mostrar uma mensagem de boas vindas somente para os usurios que possuem a autorizao ROLE_GER:
<@pg lnug=jv"cnetye"ethm;castIO85-"pgEcdn=IO85-"> % ae agae"aa otnTp=tx/tl hre=S-891 aenoig"S-891% <@tgi pei=sc ui"tp/wwsrnfaeokogscrt/as % % alb rfx"e" r=ht:/w.pigrmwr.r/euiytg" > <DCYEhm PBI "/WC/T HM 40 Tastoa/E""tp/www.r/Rhm4loedd> !OTP tl ULC -/3/DD TL .1 rniinl/N ht:/w.3ogT/tl/os.t" <tl hm> <ed ha> <eaht-qi=CnetTp"cnet"ethm;castIO85-" mt tpeuv"otn-ye otn=tx/tl hre=S-891> <il>rad Fninro/il> ttee o ucoi<tte <ha> /ed <oy bd> <1BmVnoae d Fninro/1 h>e id ra o ucoi<h> <e:uhrz iAyrne=RL_E" scatoie fnGatd"OEGR> Bmvnogrne<e:uhniainpoet=picpluenm"/. e id eet scatetcto rpry"rnia.srae >

www.javasimples.com.br/spring-2/spring-security-3-deixando-sua-aplicacao-web-segura

5/6

10/10/12
<scatoie /e:uhrz>

Java Simples Spring Security 3 -> Deixando sua aplicao Web segura!

<r>b/ b/<r> < he=./_pigscrt_oot>ar/><r> a rf".jsrn_euiylgu"Si<a.b/ < he=./ne.s"Rtra pr aPgn Iiil/> a rf".idxjp>eonr aa ia nca<a <bd> /oy <hm> /tl

Fcil de ler e de fazer no ? S para explicar melhor, o que utilizamos foram as tags authorize e authentication. authorize: tudo o que estiver dentro esta tag s ir ser rendererizado caso a autorizao do usurio logado atenda a regra de algum atributo que informarmos. Neste exemplo usei o atributo ifAnyGranted, quer dizer que o contedo da tag s ir ser renderizado caso o usurio logado possua alguma das autorizaes (ROLEs) informadas no atributo. Para informar mais de uma autorizao basta separ-las por vrgula. Ex: ifAnyGranted=ROLE_GER,ROLE_FUNC. Neste caso o contedo da tag ser renderizado caso o usurio possua autorizao ROLE_GER ou ROLE_FUNC. Outros possveis atributos so: ifAllGranted (somente ir renderizar caso o usurio possua todas as autorizaes informadas) e ifNotGranted (ir renderizar somente se o usurio no possuir a autorizao informada). authentication: utilizada para recuperar o objeto Authentication que est guardado no contexto do Spring Security. O usurio logado guardado na propriedade principal do objeto Authentication, sendo assim ns podemos exibir seu nome de usurio atravs do atributo property informando principal.username. Obs: os dados do usurio logado so guardados em um objeto que implementa a interface UserDetails, ou seja, o atributo principal do objeto Authentication uma implementao de UserDetails. E chegamos ao final de mais um post. O projeto do STS est disponvel para download aqui.

www.javasimples.com.br/spring-2/spring-security-3-deixando-sua-aplicacao-web-segura

6/6

Anda mungkin juga menyukai