Programiranje

Acegi Security v eni uri

Acegi Security med razvijalci Java Enterprise ustvarja resne pozitivne izkušnje, zato se morda sprašujete, kako deluje. V tem članku vas ShriKant Vashishtha popelje skozi vse korake praktične implementacije Acegi Security. Najprej boste nastavili storitve preverjanja pristnosti in avtorizacije na osnovi obrazcev za spletno aplikacijo, ki temelji na Javi, nato pa boste Acegi Security prilagodili za dinamično avtorizacijo in integracijo z lastniškimi izvedbami preverjanja pristnosti, kot je LDAP.

Acegi Security je zmogljiva in prilagodljiva varnostna rešitev za poslovne programe Java, zgrajene z uporabo Spring Spring. Vbrizgavanje odvisnosti, ki temelji na vzmeti, omogoča enostavno konfiguriranje in izvajanje Acegi na popolnoma nevsiljiv način. To je blagodejno za organizacije, ki morda ne želijo izvajati spomladanskega okvira kot celote, vendar še vedno potrebujejo učinkovito varnost za večkratno uporabo za stare programe.

Ta članek vam daje kratek začetek izvajanja Acegi Security za osnovno aplikacijo za obdelavo naročil. Za aplikacijo boste nastavili storitve preverjanja pristnosti in avtorizacije in te varnostne funkcije implementirali na spletnih straneh, ki temeljijo na obrazcih. Po pregledu primera bi lahko v približno eni uri nastavili osnovno zaščito na podlagi obrazca za katero koli spletno aplikacijo.

Po hitrem uvodu v primer izvedbe boste spoznali nekaj načinov, kako lahko z Acegi prilagodite varnost aplikacije. Videli boste, kako nastaviti dinamično avtorizacijo na podlagi vlog na podlagi baze podatkov, ki uporabniške vloge preslika v URL-je. Na koncu boste izvedeli, kako ustvariti izvedbo preverjanja pristnosti Acegi Security po meri, ki se lahko integrira z obstoječimi lastniškimi izvedbami overjanja.

Nastavitev okolja

Želel sem pokazati uporabnost Acegija za širok spekter izvedb, ne samo za aplikacije, ki temeljijo na pomladi. Primer aplikacije sem zgradil z uporabo JEE 5, z JavaServer Pages za predstavitveni sloj in SiteMesh za spletno postavitev. Aplikacijo je mogoče prav tako enostavno zgraditi z uporabo Struts 2, infrastruktura Struts 2 pa je že v izvorni kodi, čeprav ni implementirana. Za uvedbo varnosti Acegi za aplikacijo sem uporabil injekcijo odvisnosti Spring. Glejte razdelek Viri za prenos izvorne kode aplikacije. Za nastavitev okolja aplikacije sledite tem korakom:

Korak 1. Prenesite Acegi, Spring 2 in SiteMesh (za povezave za prenos glejte Vire).

Korak 2. V projektu Java ustvarite naslednjo strukturo map:

src - Vsebuje izvorno kodo Java

preskus - Vsebuje testne primere

konfig - Katera koli konfiguracijska datoteka lastnosti / XML, ki mora biti znotraj poti predavanj

splet - Vsebuje spletno aplikacijo

|

dekoraterji - Vsebuje okrasitelje SiteMesh

slike - Vsebuje slike, če obstajajo

skripte - datoteke JavaScript

stilov - Cascading Style Sheets (CSS)

WEB-INF

|

jsp - Vsebuje datoteke JavaServer Pages (JSP)

lib - Vsebuje JAR-je

Korak 3. V imenik WEB-INF / lib kopirajte naslednje datoteke JAR:

  • acegi-security-1.0.5.jar - glavni razredi varnostnega sistema Acegi
  • cglib-2.1.3.jar - Knjižnica za generiranje kod, ki jo uporablja Spring
  • commons-codec-1.3.jar - Dajalniki in dekodirniki, kot so Base64, Hex, Phonetic in URL-ji
  • commons-lang-2.1.jar - Pomožne pripomočke za java.lang API-ji
  • ehcache-1.2.3.jar - Uporablja se za osnovne namene predpomnjenja
  • freemarker-2.3.8.jar - Uporablja se pri izvedbi Struts
  • jstl.jar, standard.jar - Knjižnica oznak JavaServer Pages Standard Tag Library (JSTL)
  • log4j-1.2.13.jar - Za sečnjo
  • ognl-2.6.11.jar - Knjižnica OGNL, ki jo uporablja izvedba Struts
  • sitemesh-2.3.jar - SiteMesh JAR
  • pomlad.jar - Spring Framework JAR
  • struts2-core-2.0.8.jar - Struts 2 jedra JAR
  • xwork-2.0.3.jar - Uporablja Struts

Spremembe web.xml

Ker Acegi Security temelji na konceptu filtri za programčke in prestrezniki, morate dodati vnose za FilterToBeanProxy filtrirajte do aplikacije web.xml deskriptor razmestitve, kot je prikazano v seznamu 1.

Seznam 1. Dodajanje filtrov strežniškega programčka v web.xml

  AcegiTraining contextConfigLocation /WEB-INF/applicationContext*.xml Acegi Filter Chain Proxy org.acegisecurity.util.FilterToBeanProxy targetClass org.acegisecurity.util.FilterChainProxy ... ... Acegi Filter Chain Proxy / Acegi Filter Chain Proxy / Acegi Filter Chain Proxy / Jice jc Verižni proxy * .action Acegi Filter Verižni proxy * .jsp ... 

FilterToBeanProxy zahteva inicializacijski parameter, targetClass. The targetClass parameter poišče prvi objekt določenega razreda v kontekstu aplikacije. V konfiguraciji na seznamu 1 je ta razred org.acegisecurity.util.FilterChainProxy. Sorodni objekt bean v kontekstu aplikacije je filterChainProxy, prikazano na seznamu 2.

Seznam 2. filterChainProxy

class = "org.acegisecurity.util.FilterChainProxy">   ...   

Upoštevajte, da seznam 1 opredeljuje več preslikav filtrov za filter Acegi. Namesto tega bi se lahko izognili uporabi splošnejšega preslikave filtrov, kot je prikazano v seznamu 3.

Seznam 3. Splošno preslikavo filtrov

 Proxy verige filtra Acegi / * 

Če pa uporabljate preslikavo filtrov v seznamu 3, filter Acegi prestreže vsak URL. In filter zdaj zahteva podrobnosti o avtorizaciji tudi za statične vire (JavaScript, CSS, HTML in slike), ki jih morda ne želite zaščititi. Temu pasti se lahko izognete z uporabo določenih vzorcev URL-jev.

Pri postavitvi filtrov za strežniške programčke je red nujen. Ker primer aplikacije uporablja filtre za Acegi, JSP in SiteMesh, morate najprej namestiti filter Acegi, nato JSP in SiteMesh.

$config[zx-auto] not found$config[zx-overlay] not found