Programovanie

Zabezpečenie Acegi za jednu hodinu

Acegi Security generuje medzi vývojármi podnikových prostredí Java nejaké vážne pozitívne hlášky, takže by vás mohlo zaujímať, ako to funguje. V tomto článku vás ShriKant Vashishtha prevedie všetkými krokmi praktickej implementácie zabezpečenia Acegi Security. Najskôr nastavíte overovacie a autorizačné služby založené na formulároch pre webovú aplikáciu založenú na prostredí Java, potom prispôsobíte Acegi Security pre dynamickú autorizáciu, ako aj integráciu s vlastnými implementáciami autentifikácie, ako je LDAP.

Acegi Security je výkonné a flexibilné bezpečnostné riešenie pre podnikové aplikácie Java postavené na jarnom rámci. Vďaka jarnému vkladaniu závislostí je Acegi ľahko konfigurovateľný a implementovateľný úplne neintruzívnym spôsobom. Toto je prínos pre organizácie, ktoré by možno nechceli implementovať jarný rámec ako celok, ale stále potrebujú efektívne a opakovane použiteľné zabezpečenie pre staršie aplikácie.

Tento článok ponúka základné informácie o implementácii Acegi Security pre základnú aplikáciu na spracovanie objednávok. Nastavíte autentifikačné a autorizačné služby pre aplikáciu a tieto bezpečnostné funkcie implementujete do webových stránok založených na formulároch. Po vykonaní príkladu by ste mali byť schopní nastaviť základné zabezpečenie založené na formulároch pre každú webovú aplikáciu asi za hodinu.

Po krátkom úvode do príkladu implementácie sa dozviete o niektorých spôsoboch, ako môžete prispôsobiť zabezpečenie aplikácií pomocou Acegi. Uvidíte, ako nastaviť dynamickú autorizáciu na základe rolí na základe databázy, ktorá mapuje role používateľov na adresy URL. Nakoniec zistíte, ako vytvoriť vlastnú implementáciu autentifikácie Acegi Security, ktorú je možné integrovať s existujúcimi implementáciami autentifikácie autentifikácie.

Nastavenie prostredia

Chcel som demonštrovať použiteľnosť Acegi na širokú škálu implementácií, nielen na jarné aplikácie. Príkladnú aplikáciu som vytvoril pomocou nástroja JEE 5, pričom pre prezentačnú vrstvu boli použité stránky JavaServer Pages a rozloženie SiteMesh pre Web. Aplikáciu je možné rovnako ľahko vytvoriť pomocou Struts 2 a infraštruktúra Struts 2 je už v zdrojovom kóde zavedená, hoci nie je implementovaná. Na implementáciu zabezpečenia Acegi pre aplikáciu som použil Spring dependency injection. V časti Zdroje si môžete stiahnuť zdrojový kód aplikácie. Podľa týchto pokynov nastavíte prostredie aplikácie:

Krok 1. Stiahnite si Acegi, jar 2 a SiteMesh (odkazy na stiahnutie nájdete v časti Zdroje).

Krok 2. Vytvorte nasledujúcu štruktúru priečinkov v projekte Java:

src - Obsahuje zdrojový kód Java

test - Obsahuje testovacie prípady

konfigur - Akýkoľvek konfiguračný súbor vlastnosti / XML, ktorý musí byť vo vnútri cesty triedy

web - Obsahuje webovú aplikáciu

|

dekoratérov - Obsahuje dekoratéry SiteMesh

snímky - Obsahuje obrázky, ak existujú

skriptov - súbory JavaScript

štýly - Kaskádové štýly (CSS)

WEB-INF

|

jsp - Obsahuje súbory stránok JavaServer (JSP)

lib - Obsahuje JAR

Krok 3. Skopírujte nasledujúce súbory JAR do adresára WEB-INF / lib:

  • acegi-security-1.0.5.jar - Hlavné triedy bezpečnostného systému Acegi
  • cglib-2.1.3.jar - Knižnica na generovanie kódu, ktorú používa Spring
  • commons-codec-1.3.jar - Kodéry a dekodéry, napríklad Base64, Hex, Fonetické a URL
  • commons-lang-2.1.jar Pomocné programy pre Windows java.lang API
  • ehcache-1.2.3.jar - Používa sa na základné účely ukladania do pamäte cache
  • freemarker-2.3.8.jar - Používa sa pri implementácii Struts
  • jstl.jar, standard.jar - Knižnica značiek štandardných knižníc značiek JavaServer Pages (JSTL)
  • log4j-1.2.13.jar - Na ťažbu dreva
  • ognl-2.6.11.jar - Knižnica OGNL používaná implementáciou Struts
  • sitemesh-2.3.jar - SiteMesh JAR
  • jar.jar - Jarný rámec JAR
  • struts2-core-2.0.8.jar - Vzpery 2 jadra JAR
  • xwork-2.0.3.jar - Používa Struts

Zmeny v súbore web.xml

Pretože Acegi Security je založené na koncepte servletové filtre a interceptory, musíte pridať záznamy pre FilterToBeanProxy filter na vašu aplikáciu web.xml deskriptor nasadenia, ako je uvedené v zozname 1.

Zoznam 1. Pridanie filtrov servletu do súboru 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 / j_acegi_secur_security_security Chain Proxy * .action Acegi Filter Chain Proxy * .jsp ... 

FilterToBeanProxy vyžaduje inicializačný parameter, targetClass. The targetClass parameter vyhľadá prvý objekt zadanej triedy v kontexte aplikácie. V konfigurácii v zozname 1 je táto trieda org.acegisecurity.util.FilterChainProxy. Súvisiaci objekt bean v kontexte aplikácie je filterChainProxy, zobrazené v zozname 2.

Zoznam 2. filterChainProxy

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

Všimnite si, že Výpis 1 definuje viacnásobné mapovanie filtra pre filter Acegi. Namiesto toho by ste mohli uniknúť použitiu všeobecnejšieho mapovania filtra, ako je uvedené v zozname 3.

Zoznam 3. Všeobecné mapovanie filtra

 Acegi Filter Chain Proxy / * 

Ak však použijete mapovanie filtra v zozname 3, každú adresu URL zachytí Acegiho filter. A teraz filter vyžaduje podrobnosti autorizácie aj pre statické prostriedky (JavaScript, CSS, HTML a obrázky), ktoré možno nebudete chcieť zabezpečiť. Tejto pasci sa môžete vyhnúť použitím konkrétnych vzorov adries URL.

Pri umiestňovaní filtrov servletu je nevyhnutná objednávka. Pretože príkladová aplikácia používa filtre pre Acegi, JSP a SiteMesh, musíte najskôr umiestniť filter Acegi a až potom filtre JSP a SiteMesh.

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