Você está na página 1de 22

Implementando uma aplicao java segura utilizando JAAS.

Introduo
Neste documento mostrarei como desenvolver uma simples aplicao utilizando JAAS (Java Authentication and Authorization Service) e um pouco de JQuery para realizar a validao de alguns campos. As tecnologias utilizadas sero: JD !." #pdate $$ e Net%eans &.!.' (((.sun.com.)r *yS+l !." ,ttp:--dev.mys+l.com-do(nloads .om/at &.".'0 (1nstalado 2untamente com o Net%eans)

Let's go..
/om seu JD e Net%eans 23 instalado 4 vamos comear criando um novo pro2eto clicando com o )oto direito na a)a lateral 5pro2etos6 e em seguida selecionando 5Java 7e)6 e depois 5Aplicao 7e)6 ou ento atrav8s do menu 5Ar+uivo6 e 5Novo 9ro2eto6. :nto de um nome a sua aplicao4 com a inicial mai;scula pre<erencialmente e cli+ue em 59r=>imo6.

Se pre<erir altere o 5/amin,o do conte>to6 +ue ser3 o nome +ue ser3 e>i)ido na #?@ +uando e>ecutar sua aplicao.

: cli+ue em 5Ainalizar6. :nto vocB ter3 um pro2eto ao menos parecido com este...

:nto vamos dar uma organizada na disposio dos diret=rios para +ue possamos dar andamento no pro2eto. /rie trBs (C) diret=rios dentro de 593ginas 7e)6 com os nomes: 52sp64 5admin6 e 5user64 por <im mova a p3gina 5inde>.2sp64 +ue <oi gerad aautomaticamente pela 1D:4 para o diret=rio 52sp6. D)s: No tente ainda e>ecutar seu pro2eto4 con<iguraremos o 5(e).>ml6 em instantes. Ee2a o +ue <izemos at8 agora:

Agora criaremos algumas outras p3ginas4 clicando so)re o diret=rio de destino e selecionando 5Novo JS96. /rie as p3ginas de <orma +ue <i+uem desta maneira:

Dentro do diret=rio 57:%F1NA6 vocB encontrar3 um ar+uivo c,amado 5(e).>ml64 ele 8 respons3vel pelo mapeamento dos recursos de toda sua aplicao4 e como alteramos o local da p3gina 5inde>.2sp6 precisamos alterar tam)8m seu mapa. Ee2a:

:nto e>ecute seu pro2eto4 para con<erir se tudo est3 <uncionando corretamente4 em caso positivo4 vocB ver3 o to <amoso 5Gello 7orld H6 em seu )ro(ser padro.

Agora, um pouco de JAAS


D JAAS ou 5Java Aut,entication and Aut,orization Service6 8 composto de um con2unto de A91Is para distinguir de<initivamente a camada de segurana da camada de aplicao4 retirando assim a responsa)ilidade do desenvolvedor de manter <iltros e ou +uais+uer outros m8todos de <orma program3tica.

DizFse +ue este 8 um tipo de segurana declarativa4 pois4 so apenas declaradas as restriJes no ar+uivo 5(e).>ml6 de sua aplicao e no 5server.>ml6 do servidor (e)4 +ue em nosso caso 8 o Apac,e .omcat. 9ara economizar um pouco de digitao4 vou usar uma re<erBncia muito )oa retirada do site ,ttp:--2sp)rasil.com.)r-mostrar-$0 4 do autor Kleydson @ima (gleydsonL2ee)rasil.com.)r). Segue o trec,o com <onte em it3lico...
Conceitos Importantes Para o bom entendimento da segurana no J2 ! necess"rio #ue conheamos a$guns conceitos importantes. %s conceitos mais importantes so o de ro$e, user, group e rea$m. &o$e' (m ro$e ! um n)ve$ de permisso. (su"rios podem ter ro$es di*erentes e com acessos di*erentes. Por e+emp$o, um sistema de gesto da empresa poderia ter os ro$es' ,uncion"rio -erente .iretor ,ornecer /ada ator interage com o sistema com n)veis de permiss0es di*erentes. (m -erente e o .iretor t1m acesso ao m2du$o de *o$ha de pagamento, no entanto o ,ornecedor e ,uncion"rio no. (m ro$e representa, em n)veis pr"ticos, o pape$ #ue o usu"rio tem no dom)nio da empresa. Provave$mente, no dom)nio do neg2cio o *uncion"rio no tem acesso a *o$ha de pagamento da empresa. Isso deve se re*$etir no sistema. User: (m usu"rio representa uma entidade com acesso ao sistema. % n)ve$ de acesso desse usu"rio vai depender do seu ro$e. % usu"rio c$audio pode ter o ro$e -erente e o usu"rio marcos o ro$e ,uncion"rio. Assim, no acesso ao sistema, o usu"rio c$audio #uando tentar acesso o m2du$o de *o$ha de pagamento no ser" barrado pe$o servidor de ap$ica0es, permitindo assim #ue e$e possa acessa3$o. Por!m, se o usu"rio marcos tentar rea$izar a mesma operao o servidor de ap$ica0es ir" emitir um erro de segurana e no permitir" #ue se tenha acesso ao m2du$o. Group: (m grupo ! associado com um con4unto de ro$es e todo usu"rio #ue ! membro do grupo automaticamente herda os ro$es associados. Por e+emp$o, podemos criar um grupo denominado -erencia. %s ro$es pertencentes ao grupo -erencia sero -erente e .iretor. Se co$ocarmos o usu"rio car$os pertencente ao grupo -erencia, e$e herdaria automaticamente todas as permiss0es do ro$e -erente e .iretor. Realm: (m con4unto comp$eto de usu"rios, ro$es e groups norma$mente armazenados em a$gum banco de dados. +istem v"rios tipos de &ea$m. Podermos guardar as in*orma0es de segurana em um servidor de diret2rios L.AP ou 5IS, em ar#uivos de con*igura0es ou em um banco de

dados. Roles %s ro$es so n)veis de permisso #ue norma$mente so associados com partes de (&L #ue possuem acessos di*erentes. Por e+emp$o, podemos dar acesso a (&L http'66777.empresa.com.br6*o$ha3pagamento para somente usu"rios #ue possuam o ro$e de diretor e http'66777.empresa.com.br6contra3che#ue para usu"rios #ue possuam o ro$e de *uncion"rio. .essa *orma os usu"rios #ue possuem o ro$e *uncion"rio no possui acesso 8 "rea de diretor. Por e+emp$o, podemos de*inir esses ro$es no ar#uivo 7eb.+m$ da ap$icao, como mostra o e+emp$o abai+o' 9securit:3ro$e; 9description;.iretor da mpresa96description; 9ro$e3name;diretor96ro$e3name; 96securit:3ro$e; 9securit:3ro$e; 9description;,uncion"rio da mpresa96description; 9ro$e3name;*uncionario96ro$e3name; 96securit:3ro$e; Agora precisamos *azer um mapeamento de usu"rios com os ro$es, norma$mente em n)ve$ de descritores isso ! *eito em dep$o:ment descriptores espec)*icos do servidor, no caso do tomcat ! o con*6tomcat3users.+m$. 9<+m$ version='>.?'<; 9tomcat3users; 9user username='g$e:dson' pass7ord='abced' ro$es='diretor,*uncionario'6; 9user username='4ose' pass7ord='#7ert' ro$es='*uncionario'6; 96tomcat3users; 5ote #ue um usu"rio pode ter v"rios ro$es, dessa *orma este usu"rio ter" acesso 8 "rea de *uncion"rio e diretor. &e*erenciando um ro$e e+istente @ poss)ve$ adicionar $inAs de ro$es, como ! mostrado abai+o'

9securit:3ro$e3re*; 9ro$e3name;empregado 9ro$e3$inA;*uncionario 96securit:3ro$e3re*; .essa *orma o ro$e empregado passa um $inA para o ro$e *uncionario. /on*igurando o acesso a recursos Beb A con*igurao da segurana dec$arativa ser" dada no dep$o:ment descriptor C7eb.+m$D da ap$icao e basicamente por tr1s tags EFL' 9$ogin3con*ig;' /on*igura #ua$ ser" o modo de re#uisitar a autenticao ao usu"rio e de #ua$ rea$m o servidor de ap$ica0es ir" buscar in*orma0es. 9securit:3constraint;' (sada para con*igurar os acessos a um con4unto de recursos atrav!s de mapeamento de (&L. 9securit:3ro$e;' &epresenta um con4unto de*inido de grupos de rea$m. Security Constraints As securit: constraints determina #uem ! autorizado a acessar um con4unto de padr0es de (&L 4untamente com seus m!todos de acesso CP%SG ou - GD. /aso voc1 de*ina um securit: constraint para uma determinada (&L o container s2 permitir" acesso a essa (&L atrav!s de um usu"rio autenticado e com o ro$e espec)*ico. /aso um outro usu"rio no autenticado tente acessar o conteHdo, o servidor ir" tentar autenticar este usu"rio. Autenticao de (su"rios +istem basicamente cinco tipos de autenticao de usu"rios como $istado abai+o' Nenhuma' (su"rio no ! autenticado. HTTP Basic Authentication C9auth3method;IASI/96auth3method;D' ste m!todo de autenticao *az com #ue o bro7ser so$icite usu"rio e senha para autenticao atrav!s de um *ormu$"rio propriet"rio do pr2prio bro7ser. Form- ase! Authentication C9auth3method;,%&F96auth3method;D' ste m!todo permite ao usu"rio mostrar uma p"gina JSP #ue ser" o *ormu$"rio de autenticao como tamb!m uma p"gina padro de erros. 9J33 L%-I5 A(GK 5GI/AGI%5 33; 9$ogin3con*ig; 9auth3method;,%&F96auth3method; 9rea$m3name;de*au$t96rea$m3name; 9*orm3$ogin3con*ig; 9*orm3$ogin3page;$ogin.4sp96*orm3$ogin3page; 9*orm3error3page;error.4sp96*orm3error3page; 96*orm3$ogin3con*ig; 96$ogin3con*ig;

Goda 8s vezes #ue os recursos con*igurados *orem acessados e houver a necessidade de autenticao o *ormu$"rio $ogin.4sp ser" e+ibido. Client-certi"icate authentication C9auth3method;/LI 5G3/ &G96auth3method;D' ste ! o m!todo mais seguro de autenticao usando SSL e es#uemas de troca de certi*icados para autenticao. #i$est AuthenticationC9auth3method;.I- SG96auth3method;D' % m!todo .I- SG ! parecido com o IASI/ e ,%&F, por!m as in*orma0es de pass7ord so enviadas criptogra*adas atrav!s de a$gum a$goritmo de hashing. .essa *orma a senha tra*ega criptogra*ada mesmo em canais no seguros. +emp$o de uma con*igurao de 7eb.+m$' 9<+m$ version=L>.?L encoding=LIS%3MMNO3>L<; 9J.%/GPP 7eb3app P(ILI/ L366Sun Ficros:stems, Inc.66.G. Beb App$ication 2.Q66 5L Lhttp'664ava.sun.com.6dtd67eb3appR2RQ.dtdL;... 9disp$a:3name;J2 9serv$et; 9serv$et3name;inde+96serv$et3name; 9disp$a:3name;inde+96disp$a:3name; 94sp3*i$e;6inde+.4sp964sp3*i$e; 96serv$et; 9session3con*ig; 9session3timeout;Q?96session3timeout; 96session3con*ig; 9J33 & -&AS . S -(&A5SA 33; 9securit:3constraint; 97eb3resource3co$$ection; 97eb3resource3name;B&/o$$ection967eb3resource3name; 9ur$3pattern;6sistema6contra3che#ue696ur$3pattern; 9http3method;- G96http3method; 967eb3resource3co$$ection; 9auth3constraint; 9ro$e3name;*uncionario96ro$e3name; 96auth3constraint; Irasi$App96disp$a:3name;

9user3data3constraint; 9transport3guarantee;5%5 96transport3guarantee; 96user3data3constraint; 96securit:3constraint; 9securit:3constraint; 97eb3resource3co$$ection; 97eb3resource3name;B&/o$$ection967eb3resource3name; 9ur$3pattern;6sistema6*o$ha3pagamento696ur$3pattern; 9http3method;- G96http3method; 967eb3resource3co$$ection; 9auth3constraint; 9ro$e3name;diretor96ro$e3name; 96auth3constraint; 9user3data3constraint; 9transport3guarantee;5%5 96transport3guarantee; 96user3data3constraint; 96securit:3constraint; 9J33 FTG%.% . L%-I5 33; 9$ogin3con*ig; 9rea$m3name;96rea$m3name; 9auth3method;IASI/96auth3method; 96$ogin3con*ig; 9J33 &%L S . S -(&A5SA 33; 9securit:3ro$e; 9ro$e3name;diretor96ro$e3name; 96securit:3ro$e;

9securit:3ro$e; 9ro$e3name;*uncionario96ro$e3name; 96securit:3ro$e;

Nuss... Quanta in<ormao no 8 M Eoltando a nosso pro2eto4 decidi criar um JD%/?ealm para coisa <icar mais interessante ao inv8s de guardar as in<ormaJes em ar+uivos no servidor. Eamos comear criando o )anco +ue iremos utilizar4 utilize seu editor pre<erido para realizar esta tare<a4 vou mostrar um e>emplo de desen,o de %D +ue <iz4 no sou muito )om com isso4 mas4 <uncionou...
create ta)le usuarios( usuNlogin varc,ar($") primary Oey4 usuNpass varc,ar(!") not null4 usuNnome varc,ar(!") not null4 usuNemail varc,ar('"") not null ) engineP 1nnoD%Q create ta)le papeis( papNdescricao varc,ar($") not null4 primary Oey (papNdescricao) ) engineP 1nnoD%Q create ta)le usupap( usuNlogin varc,ar($") not null4 papNdescricao varc,ar($") not null4 primary Oey (usuNlogin4 papNdescricao)4 <oreign Oey (usuNlogin) re<erences usuarios (usuNlogin)4 <oreign Oey (papNdescricao) re<erences papeis (papNdescricao) ) engineP 1nnoD%Q -RSen,a P *D!(admin).Rinsert into usuarios values (IadminI4I$'$C$<$STa!Ta!aTUC0SUa"eUa0"'<cCI4IAD*1N1S.?ADD?I4IadmLadm.comI)Q -RSen,a P *D!(user).Rinsert into usuarios values (IuserI4Iee''c))'S"!$eU")"Taac"ca"&"c$CeeI4I#S#A?1DI4IuserLuser.comI)Q insert into papeis values(ImanagerI)Q insert into papeis values(IuserI)Q insert into usupap values(IadminI4ImanagerI)Q insert into usupap values(IuserI4IuserI)Q

Neste momento4 vocB 23 tem as ta)elas criadas e dois pap8is 23 pr8F

de<inidos4 5manager6 o)rigat=rio na maioria das versJes do .omcat (ac,o +ue li isto em algum lugar...) e 5user6 +ue 8 nosso usu3rio comum e tam)8m dois usu3rios 5admin6e 5user6 com seus respectivos pap8is e sen,as. Neste caso cada usu3rio tem apenas um papel4 mas poderiam ter +uantos <ossem necess3rios4 mas para nossa ilustrao4 um para cada 23 8 o )astante. Agora no Net%eans selecione a a)a 5Servios6 e em seguida o item 5Servidores64 cli+ue com o )oto direito do mouse so)re 5Apac,e .omcat6 e selecione 5:ditar server.>ml6. Adicione este trec,o seu ar+uivo 5server.>ml6. Ateno a 5connection#?@6 pois ela pode variar dependendo da sua con<igurao. D%S: @ocalize uma tag 5V?ealm..6 4 deve ser a)ai>o da mesma.
V?ealm classNamePWorg.apac,e.catalina.realm.JD%/?ealmW driverNamePWorg.g2t.mm.mys+l.DriverW digestPW*D!W connection#?@PW2d)c:mys+l:--local,ost:CC"&-secured)W connectionNamePWrootW connection9ass(ordPWW user.a)lePWusuariosW userName/olPWusuNloginW user/red/olPWusuNpassW user?ole.a)lePWusupapW roleName/olPWpapNdescricaoW-X

*ais in<ormaJes em: ,ttp:--tomcat.apac,e.org-tomcatF!.!Fdoc-realmF,o(to.,tml ?einicie o servidor4 isto pode ser <eito atrav8s do )oto 5?einiciar servidor6 na parte lateral es+uerda da a)a in<erior do pr=prio Net%eans. Ee2a:

A partir de agora caso se2a solicitado identi<icao para +ue possa e<etuar a construo ou e>ecuo do pro2eto4 vocB deve inserir 5admin6 para usu3rio e sen,a4 23 +ue este 8 o role administrador do .omcat4 como de<inimos no )anco de dados. #saremos o m8todo 5AD?*6 para a autenticao ento temos +ue editar nossa p3gina de login para +ue <i+ue dentro do padro e>igido para tal.

No sou muito )om com design e esse tam)8m no nosso <oco (ainda )em...)4 ento construY uma p3gina o mais simples possYvel. Ee2a:
V,tmlX V,eadX Vmeta ,ttpFe+uivPW/ontentF.ypeW contentPWte>t-,tmlQ c,arsetP#.AF0WX Vstyle typePWte>t-cssWX )ody Z margin:"Q padding:"Q )acOground:[cccQ te>tFalign:centerQ \ la)elZ display: )locOQ te>tFalign:le<tQ \ [pagina Z (idt,: '0"p>Q margin: $""p> autoQ padding: '"p>Q te>tFalign:le<tQ \ [<ields Z padding: !p>Q te>tFalign:centerQ \ [)ut:nviarZ marginFle<t:'$!p>Q \ V-styleX VtitleX@oginV-titleX V-,eadX V)odyX Vdiv idPWpaginaWX Vdiv idPW<ieldsWX V<orm actionPWj_security_checkW met,odPWpostWX Vla)elX#su]aacuteQrioV-la)elX Vinput idPW2NusernameW namePWj_usernameW typePWte>tWX Vla)el XSen,aV-la)elX Vinput idPW2Npass(ordW namePWj_passwordW typePWpass(ordWX V)rX Vinput idPW)ut:nviarW typePWsu)mitW valuePW:nviarWX V-<ormX V-divX V-divX V-)odyX V-,tmlX

%onita no 8... ^ importante sa)er +ue as propriedades marcadas em vermel,o tem +ue ter esse nome o)rigatoriamente. : tam)8m criaremos uma p3gina de login.
V,tmlX V,eadX Vmeta ,ttpFe+uivPW/ontentF.ypeW contentPWte>t-,tmlQ c,arsetP#.AF0WX Vstyle typePWte>t-cssWX )ody Z margin:"Q padding:"Q te>tFalign:centerQ \ [pagina Z (idt,: '""_Q margin:" autoQ padding: '"p>Q te>tFalign:le<tQ \ [msg Z te>tFalign:centerQ color:redQ \ V-styleX VtitleX:rroV-titleX V-,eadX V)odyX Vdiv idPWpaginaWX Vdiv idPWmsgWX V,'XEoc]ecircQ n]atildeQo tem permiss]atildeQo para acessar este recurso.V-,'X V-divX V-divX V-)odyX V-,tmlX

As p3ginas com restrio de acesso podem ser <ormatadas da <orma +ue vocB ac,ar mel,or so elas: 5restricted.2sp6 (poderia ser uma p3gina de administrao) e a outra 5allo(ed.2sp6 (destinada a um usu3rio especY<ico). %em4 at8 a+ui 23 criamos o )anco de usu3rios e permissJes4 con<iguramos

o servidor4 criamos as p3ginas de login e erro e 23 sa)emos +uem pode acessar +ual p3gina... n=s sa)emos mas a aplicao no4 ento vamos voltar ao nosso ar+uivo 5(e).>ml6. Suas con<iguraJes devem ser muito parecidas a esta:
VloginFcon<igX Vaut,Fmet,odXAD?*V-aut,Fmet,odX V<ormFloginFcon<igX V<ormFloginFpageX-2sp-login.2spV-<ormFloginFpageX V<ormFerrorFpageX-2sp-error.2spV-<ormFerrorFpageX V-<ormFloginFcon<igX V-loginFcon<igX VsecurityFroleX VroleFnameXmanagerV-roleFnameX V-securityFroleX VsecurityFconstraintX V(e)FresourceFcollectionX VurlFpatternX-admin-RV-urlFpatternX V-(e)FresourceFcollectionX Vaut,FconstraintX VroleFnameXmanagerV-roleFnameX V-aut,FconstraintX V-securityFconstraintX VsecurityFroleX VroleFnameXuserV-roleFnameX V-securityFroleX VsecurityFconstraintX V(e)FresourceFcollectionX VurlFpatternX-user-RV-urlFpatternX V-(e)FresourceFcollectionX Vaut,FconstraintX VroleFnameXuserV-roleFnameX V-aut,FconstraintX V-securityFconstraintX

De<imos ento +ue o m8todo de autenticao ser3 o 5AD?*64 +ue somentes os usu3rios com role 5manager6 podero acessar as p3ginas do diret=rio 5-admin6 e +ue somente os usu3rios com role 5user6 podem acessar o diret=rio 5-user6 e seu conte;do. /riei uma p3gina de login apenas com dois linOs um para a p3gina contida no diret=rio 5admin6 e outro para a p3gina do diret=rio 5user6.

V,tmlX V,eadX Vmeta ,ttpFe+uivPW/ontentF.ypeW contentPWte>t-,tmlQ c,arsetP#.AF0WX Vstyle typePWte>t-cssWX )ody Z margin:"Q padding:"Q te>tFalign:centerQ \ [pagina Z (idt,: '""p>Q margin: $""p> autoQ padding: '"p>Q te>tFalign:le<tQ \ [msg Z te>tFalign:centerQ \ V-styleX VtitleX1nde>V-titleX V-,eadX V)odyX Vdiv idPWpaginaWX Vdiv idPWmsgWX Va ,re<PW..-admin-restricted.2spWX V,'XAdministradorV-,'X V-aX Va ,re<PW..-user-allo(ed.2spWX V,'X#su]aacuteQrioV-,'X V-aX V-divX V-divX V-)odyX V-,tmlX

A permisso 8 mantida na sesso ento para alternar entre os tipos 5manager6 e 5user6 vocB tem duas alternativas: criar um 5logout6invalidando a sesso ou reiniciar seu )ro(ser. :nto vamos l3... Selecione pra onde vocB dese2a ir:

Selecionei administrador e ento <ui redirecionado para ap3gina de login.

Digitei o usu3rio e sen,a corretamente e...

: estamos na p3gina de administrao. Se tiv8ssemos inserido um usu3rio e sen,a v3lidos porem sem o nYvel de acesso necess3rio verYamos isso.

Du se insirido usu3rio ou sen,a inv3lidos....

:nto seriamos redirecionados a p3gina de erro...

%om ac,o +ue 8 isso4 <izemos algo )em simples4 mas atendendo o proposto4 da+ui em diante depende de sua necessidade e imaginao. D)rigado...

?esolvemos um pro)lema4 mas4 temos outro. ?astreando min,a inter<ace de rede local e e>ecutando nossa aplicao de login ve2a o +ue encontrei...

:LL`SDJNJ-i [[Z49DS. -admin-2NsecurityNc,ecO G..9-'.' Gost: local,ost:0"0U #serFAgent: *ozilla-!." (a''Q #Q @inu> i&0&Q enF#SQ rv:'.S.'.C) KecOo-$""S"S$" Aire<o>C.!.C (S(i<t<o>) Accept: te>t-,tml4application->,tmlb>ml4application->mlQ+P".S4R-RQ+P".0 AcceptF@anguage: enFus4enQ+P".! AcceptF:ncoding: gzip4de<late AcceptF/,arset: 1SDF00!SF'4ut<F0Q+P".T4RQ+P".T eepFAlive: C"" /onnection: OeepFalive ?e<erer: ,ttp:--local,ost:0"0U-admin-restricted.2sp /ooOie: JS:SS1DN1DPU0A!%DT!U$&CS"%"/U$T:0/%%STDST:D /ontentF.ype: application->F(((F<ormFurlencoded /ontentF@engt,: CC 2NusernamePadmin]2Npass(ordPadmin :pELLWWagd [[70S:@:/. usuNpass A?D* usuarios 7G:?: usuNlogin P IadminI :LLAQWagW [[Xde<secured)usuariosusuariosusuNpassusuNpass$H $'$C$A$STa!Ta!aTUC0SUa"eUa0"'<cC

^ isso mesmo +ue vocB esta pensando4 estes so seu dados de login4 usu3rio e sen,a em te>to plano e encriptada.... Serei )em r3pido nesta parte. A pergunta: D +ue precisamos para esta)elecer uma cone>o segura para trans<erir os dados de nosso login M A resposta: SS@ (,ttps). Aaremos a+ui uma simulao simples4 comece com este comando:
Oeytool FgenOey FOeystore sample.Oeystore Fstorepass samplep(d FOeypass samplep(d FOeyalg ?SA Falias sampleNOey Fvalidity C&" Fdname WcnPSampleKroup4ouPSample4cP%e)edouro4sPS94cP%?W

:le cria um storage com uma c,ave +ue usaremos em nosso 5certi<icado6 para possi)ilitar a e>ecuo de uma cone>o ,ttps.

Agora vocB tera +ue editar o ar+uivo 5sever.>ml6 do .omcat adicionando estas lin,as:
V/onnector protocolPWG..9-'.'W SS@:na)ledPWtrueW portPW0UUCW ma>.,readsPW'""W strategyPWmsW ma>GttpGeaderSizePW0'S$W emptySession9at,PWtrueW sc,emePW,ttpsW securePWtrueW clientAut,PW<alseW OeystoreAileP5seucaminho sample.keystoreW Oeystore9assPW samplep(dW ssl9rotocol P W.@SW -X

: por <im adicione isto ao 5(e).>ml6 da sua aplicao:


VsecurityFconstraintX V(e)FresourceFcollectionX V(e)FresourceFnameXappFnameV-(e)FresourceFnameX VurlFpatternX-RV-urlFpatternX V-(e)FresourceFcollectionX VuserFdataFconstraintX VtransportFguaranteeX/DNA1D:N.1A@V-transportFguaranteeX V-userFdataFconstraintX V-securityFconstraintX

Note +ue in<ormamos +ue todas as p3ginas de nossa aplicao utilizaro cone>o segura4 eta no 8 uma pr3tica muito per<orm3tica levando em considerao o tr3<ego de rede4 ento tente aplicar isso somente onde 8 realmente necess3rio. Quando e>ecutar sua aplicao 8 possYvel +ue se2a solicitado para +ue adicione um e>ceo de segurana em relao ao certi<icado +ue criamos4 23 +ue ele no 8 assinado por uma entidade certi<icadora. Depois de adicionada a e>ceo4 o)serve +ue o canto da )arra de navegao do )ro(ser muda de <ormato4 ve2a:

: o rastreio de pacotes usando o 7ires,arO....

:LLSA. # ].2]I*p:J* ).aQEDmctt"Ot XnV%OXWd!G$U$g(%Kv#I(( : \:t4efd*%\.71DrP\G"D_L*ZgEbQeNeD)hCC'czlQ?r((QhaGC7(JhPi*F Jm.+2ASVjyicfUGh&Sothn(ilzXgS [U*j%D MDUT aI ,9p)c-Udc"!pPU/.2(&DWi0ZCaC1F7f _d)9kNAe<*!1T@VZ(eNHNcJjoia@*])FO?oNc>#p*9)::cfN1$&(MKne-- o%$X

:M7LLW WaC ].O].Ocommit :s7LLzWbWag ].O].OQS:@:/. papNdescricao A?D* usupap 7G:?: usuNlogin P IadminI :9LLLWaW2 ].O].ODde<secured)usupapusupappapNdescricaopapNdescricao9manager :M7LLW2WaC ].O].Ocommit :MQLLAdWaWuC ].O].O :LLS .#G, ].O].2Q7G.@:N7Rb.'naSk2jghd!?\g(::_]cJA)Sf1e d:ZH_JUiGdb (Qvv:&e/>yJ<S).)VL][A)0"7EHmcyF! J3 no vemos nossa sen,a...

!I"

#rincipais re$er%ncias
F ,ttp:--(((.paulovittor$C.org-$""T-'"-'&-con,ecendoFaFsegurancaFdeclarativaFdoF2avaF2aasFlF parteF'F ,ttp:--2sp)rasil.com.)r-mostrar-$0 Leandro A$ves ''' Java .eve$opment ''' Iachare$ em Sistemas de In*ormao ''' P2s graduando em .esenvo$vimento de Sistemas para Beb $eandroa$vesbsiUgmai$.com

Você também pode gostar