Ohjelmointi

Acegi Security tunnissa

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ääluokat
  • cglib-2.1.3.jar - Spring käyttää koodinluontikirjastoa
  • commons-koodekki-1.3.jar - Kooderit ja dekooderit, kuten Base64, Hex, Phonetic ja URL-osoitteet
  • commons-lang-2.1.jar - Helper-apuohjelmat java.lang Sovellusliittymät
  • ehcache-1.2.3.jar - Käytetään välimuistitarkoituksiin
  • freemarker-2.3.8.jar - Struts-toteutus käyttää
  • jstl.jar, vakio.jar - JavaServer Pages Standard Tag Library (JSTL) -tunnuskirjasto
  • log4j-1.2.13.jar - puunkorjuuseen
  • ognl-2.6.111.jar - Struts-toteutuksen käyttämä OGNL-kirjasto
  • sitemesh-2.3.jar - SiteMesh JAR
  • kevät.jar - Kevään kehys JAR
  • 2-ydin-2.0.8.jar - Jousijalka 2 ydintä JAR
  • xwork-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.