Acegi Security on tuottanut vakavaa positiivista suosiota Java-yrityskehittäjien keskuudessa, joten saatat miettiä, miten se toimii. Tässä artikkelissa ShriKant Vashishtha opastaa sinut Acegi Securityn käytännön toteutuksen kaikkiin vaiheisiin. Ensin määritetään lomakepohjaiset todennus- ja valtuutuspalvelut Java-pohjaiselle web-sovellukselle, sitten mukautat Acegi Securityn dynaamista todennusta varten sekä integroinnin omien todennustoteutusten, kuten LDAP: n, kanssa.
Acegi Security on tehokas ja joustava suojausratkaisu Java-yrityssovelluksiin, jotka on rakennettu kevään kehyksen avulla. Jousipohjainen riippuvuusinjektio tekee Acegistä helpon konfiguroida ja toteuttaa täysin häiritsemättömällä tavalla. Tämä on siuna organisaatioille, jotka eivät ehkä halua panna täytäntöön kevään kehystä kokonaisuutena, mutta tarvitsevat silti tehokasta, uudelleenkäytettävää turvallisuutta vanhoille sovelluksille.
Tässä artikkelissa kerrotaan lyhyesti, miten Acegi Security otetaan käyttöön tilausten käsittelyä varten. Määrität sovellukselle todennus- ja valtuutuspalvelut ja otat nämä suojausominaisuudet käyttöön lomakepohjaisilla verkkosivuilla. Kun olet käynyt läpi esimerkin, sinun pitäisi pystyä määrittämään minkä tahansa verkkosovelluksen perustietoturva noin tunnissa.
Toteutusesimerkin nopean johdannon jälkeen opit joistakin tavoista, joilla voit mukauttaa sovellusten suojausta Acegi-sovelluksella. Näet kuinka dynaaminen roolipohjainen valtuutus määritetään tietokantaan, joka kartoittaa käyttäjien roolit URL-osoitteisiin. Lopuksi opit luomaan mukautetun Acegi Security -todennustoteutuksen, joka voidaan integroida olemassa oleviin omistettuihin todennustoteutuksiin.
Ympäristön määritys
Halusin osoittaa Acegin sovellettavuuden moniin erilaisiin toteutuksiin, ei vain kevätpohjaisiin sovelluksiin. Rakensin esimerkkisovelluksen käyttämällä JEE 5: tä, JavaServer Pages -esityskerrosta ja SiteMesh for Web -asettelua. Sovellus voidaan yhtä helposti rakentaa Struts 2: n avulla, ja Struts 2 -infrastruktuuri on jo paikallaan lähdekoodissa, vaikka sitä ei ole toteutettu. Käytin kevään riippuvuusinjektiota Acegi-tietoturvan toteuttamiseen sovelluksessa. Katso Resurssit-osiosta ladataksesi sovelluksen lähdekoodin. Määritä sovellusympäristö seuraavasti:
Vaihe 1. Lataa Acegi, Spring 2 ja SiteMesh (katso latauslinkkien lähteet).
Vaihe 2. Luo seuraava kansiorakenne Java-projektissa:
src
- Sisältää Java-lähdekoodin
testata
- Sisältää testitapauksia
konfig
- Kaikki ominaisuus / XML-määritystiedostot, joiden on oltava luokkatiedon sisällä
verkko
- Sisältää verkkosovelluksen|
sisustajat
- Sisältää SiteMesh-sisustajia
kuvia
- Sisältää mahdollisia kuvia
skriptejä
- JavaScript-tiedostot
tyylejä
- CSS-tyylisivut
WEB-INF
|
jsp
- Sisältää JavaServer Pages -tiedostoja (JSP)
lib
- Sisältää JAR-paketteja
Vaihe 3. Kopioi seuraavat JAR-tiedostot WEB-INF / lib-hakemistoon:
acegi-security-1.0.5.jar
- Acegi-turvajärjestelmän pääluokatcglib-2.1.3.jar
- Spring käyttää koodinluontikirjastoacommons-koodekki-1.3.jar
- Kooderit ja dekooderit, kuten Base64, Hex, Phonetic ja URL-osoitteetcommons-lang-2.1.jar
- Helper-apuohjelmatjava.lang
Sovellusliittymätehcache-1.2.3.jar
- Käytetään välimuistitarkoituksiinfreemarker-2.3.8.jar
- Struts-toteutus käyttääjstl.jar, vakio.jar
- JavaServer Pages Standard Tag Library (JSTL) -tunnuskirjastolog4j-1.2.13.jar
- puunkorjuuseenognl-2.6.111.jar
- Struts-toteutuksen käyttämä OGNL-kirjastositemesh-2.3.jar
- SiteMesh JARkevät.jar
- Kevään kehys JAR2-ydin-2.0.8.jar
- Jousijalka 2 ydintä JARxwork-2.0.3.jar
- Struts käyttää
Muutokset web.xml-tiedostoon
Koska Acegi Security perustuu servlet-suodattimet ja sieppaajat, sinun on lisättävä merkintöjä FilterToBeanProxy
suodattaa sovelluksesi web.xml
käyttöönottokuvaaja, kuten luettelossa 1 on esitetty.
Luettelo 1. Servlet-suodattimien lisääminen web.xml-tiedostoon
AcegiTraining contextConfigLocation /WEB-INF/applicationContext*.xml Acegi-suodatinketjun välityspalvelin. Org.acegisecurity.util.FilterToBeanProxy targetClass. Org. Acegisecurity.util.FilterChainProxy ... ... Ketjupalvelin * .action Acegi -suodatin Ketjupalvelin * .jsp ...
FilterToBeanProxy
vaatii alustusparametrin, targetClass
. targetClass
parametri etsii määritetyn luokan ensimmäisen objektin sovelluskontekstissa. Luettelon 1 kokoonpanossa kyseinen luokka on org.acegisecurity.util.FilterChainProxy
. Aiheeseen liittyvä papuobjekti sovelluskontekstissa on filterChainProxy
, näkyy luettelossa 2.
Listaus 2. filterChainProxy
class = "org.acegisecurity.util.FilterChainProxy"> ...
Huomaa, että luettelo 1 määrittelee useita suodatinkartoituksia Acegi-suodattimelle. Voit sen sijaan päästä eroon käyttämällä yleisempää suodatinkartoitusta, kuten luettelossa 3 on esitetty.
Luettelo 3. Yleinen suodatinkartoitus
Acegi-suodatinketjupalvelin / *
Jos kuitenkin käytät suodatinkartoitusta luettelossa 3, Acegi-suodatin sieppaa kaikki URL-osoitteet. Ja suodatin pyytää nyt myös staattisten resurssien (JavaScript, CSS, HTML ja kuvat) valtuutustietoja, joita et ehkä halua suojata. Voit välttää tämän ansan käyttämällä tiettyjä URL-malleja.
Tilaus on välttämätöntä servlet-suodattimia sijoitettaessa. Koska esimerkkisovellus käyttää Acegi-, JSP- ja SiteMesh-suodattimia, sinun on ensin asetettava Acegi-suodatin ja sen jälkeen JSP- ja SiteMesh-suodattimet.