Programavimas

„Acegi Security“ per vieną valandą

„Acegi Security“ sukėlė rimtų teigiamų „Java“ kūrėjų aistrų, todėl jums gali būti įdomu, kaip tai veikia. Šiame straipsnyje „ShriKant Vashishtha“ padės jums atlikti visus praktinio „Acegi Security“ diegimo etapus. Pirmiausia nustatysite „Java“ pagrindu veikiančios žiniatinklio programos formos patvirtinimo ir autorizavimo paslaugas, tada pritaikysite „Acegi Security“, kad galėtumėte naudoti dinaminę prieigą, taip pat integraciją su nuosavybės teise patvirtintomis autentifikavimo priemonėmis, tokiomis kaip LDAP.

„Acegi Security“ yra galingas ir lankstus „Java“ įmonių programų saugos sprendimas, sukurtas naudojant „Spring“ sistemą. Pavasarinė priklausomybės injekcija leidžia „Acegi“ lengvai sukonfigūruoti ir įdiegti visiškai neįkyriai. Tai palaima organizacijoms, kurios galbūt nenori įgyvendinti visos pavasario programos, tačiau vis tiek reikia veiksmingo, daugkartinio naudojimo senų programų saugumo.

Šiame straipsnyje trumpai pradedama diegti „Acegi Security“ pagrindinei užsakymų apdorojimo programai. Jūs sukursite programos autentifikavimo ir autorizavimo paslaugas ir šias saugos funkcijas įdiegsite formų tinklalapiuose. Išnagrinėję pavyzdį, maždaug per valandą turėtumėte sugebėti nustatyti pagrindinę formos pagrįstą bet kurios žiniatinklio programos saugumą.

Po greito įgyvendinimo pavyzdžio įvado sužinosite keletą būdų, kaip galite pritaikyti programų saugumą naudodami „Acegi“. Pamatysite, kaip nustatyti dinaminį vaidmenimis pagrįstą prieigą pagal duomenų bazę, kuri susieja vartotojo vaidmenis su URL. Galiausiai sužinosite, kaip sukurti pasirinktinį „Acegi Security“ autentifikavimo diegimą, kuris galėtų integruotis su esamais patentuotais autentifikavimo diegimais.

Aplinkos nustatymas

Norėjau pademonstruoti „Acegi“ pritaikomumą įvairiausiems pritaikymams, ne tik „Spring-based“. Programos pavyzdį sukūriau naudodamas JEE 5, su „JavaServer Pages“ pateikimo sluoksniu ir „SiteMesh“ žiniatinklio išdėstymui. Programą taip pat lengva sukurti naudojant „Struts 2“, o „Struts 2“ infrastruktūra jau yra įtvirtinta šaltinio kode, nors ir neįdiegta. „Acegi“ saugai programai įgyvendinti naudojau priklausomybės nuo pavasario injekciją. Norėdami atsisiųsti programos šaltinio kodą, žr. Skyrių Ištekliai. Norėdami nustatyti programos aplinką, atlikite šiuos veiksmus:

1 žingsnis. Atsisiųskite „Acegi“, „Spring 2“ ir „SiteMesh“ (žr. Atsisiuntimo nuorodų išteklius).

2 žingsnis. Sukurkite šią aplanko struktūrą „Java“ projekte:

src - Yra „Java“ šaltinio kodas

testas - Yra bandymų atvejų

konfigūruoti - Bet kokia nuosavybės / XML konfigūracijos byla, kuri turi būti klasės kelyje

internetas - Yra žiniatinklio programa

|

dekoratoriai - Sudėtyje yra „SiteMesh“ dekoratoriai

vaizdai - Yra vaizdų, jei tokių yra

scenarijus - „JavaScript“ failai

stilius - Kaskadiniai stiliaus lakštai (CSS)

WEB-INF

|

jsp - Yra „JavaServer Pages“ failai (JSP)

lib - Sudėtyje yra JAR

3 žingsnis. Nukopijuokite šiuos JAR failus į katalogą WEB-INF / lib:

  • acegi-security-1.0.5.jar - Pagrindinės „Acegi“ apsaugos sistemos klasės
  • cglib-2.1.3.jar - Kodo generavimo biblioteka, kurią naudoja „Spring“
  • „commons-codec-1.3.jar“ - Koduotojai ir dekoderiai, pvz., „Base64“, „Hex“, „Phonetic“ ir URL
  • commons-lang-2.1.jar - pagalbinės komunalinės paslaugos java.lang API
  • ehcache-1.2.3.jar - Naudojamas pagrindinėms talpykloms
  • laisvasis žymeklis-2.3.8.jar - Naudoja Struts diegimas
  • jstl.jar, standartinis.jar - „JavaServer Pages Standard Tag Library“ (JSTL) žymų biblioteka
  • log4j-1.2.13.jar - Dėl medienos ruošos
  • ognl-2.6.11.jar - OGNL biblioteka, kurią naudoja „Struts“ diegimas
  • sitemesh-2.3.jar - „SiteMesh JAR“
  • pavasaris.jar - Pavasario pagrindų JAR
  • statramsčiai2-core-2.0.8.jar - statramsčiai 2 branduolių JAR
  • xwork-2.0.3.jar - Naudojo Struts

„Web.xml“ pakeitimai

Kadangi „Acegi Security“ remiasi servletų filtrai ir perėmėjai, turite pridėti „FilterToBeanProxy“ filtras į jūsų programą web.xml diegimo aprašas, kaip parodyta 1 sąraše.

Sąrašas 1. Servletų filtrų pridėjimas prie web.xml

  „AcegiTraining contextConfigLocation /WEB-INF/applicationContext*.xml„ Acegi “filtrų grandinės tarpinis serveris org.acegisecurity.util.FilterToBeanProxy targetClass org.acegisecurity.util.FilterChainProxy ... ...„ Acegi “filtrų grandinės tarpinis serveris / j__egi Grandinės tarpinis serveris * .action Acegi filtras Grandinės tarpinis serveris * .jsp ... 

„FilterToBeanProxy“ reikalauja inicializavimo parametro, targetClass. targetClass parametras nustato pirmąjį nurodytos klasės objektą programos kontekste. 1 sąrašo konfigūracijoje ta klasė yra org.acegisecurity.util.FilterChainProxy. Susijęs pupelių objektas programos kontekste yra filterChainProxy, parodyta 2 sąraše.

2 sąrašas. filterChainProxy

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

Atkreipkite dėmesį, kad 1 sąraše apibrėžiami keli „Acegi“ filtro susiejimai. Vietoj to galite išvengti bendresnio filtrų susiejimo, kaip parodyta 3 sąraše.

Sąrašas 3. Bendras filtro atvaizdavimas

 „Acegi“ filtrų grandinės tarpinis serveris / * 

Tačiau jei naudojate filtrų atvaizdavimą 3 sąraše, kiekvieną URL perima „Acegi“ filtras. Dabar filtras taip pat reikalauja statinio šaltinio („JavaScript“, CSS, HTML ir vaizdų) išsamios prieigos teisės, kurios galbūt nenorite apsaugoti. Galite išvengti šios spąstų naudodami konkrečius URL šablonus.

Tvarka yra būtina dedant servletų filtrus. Kadangi pavyzdinėje programoje naudojami „Acegi“, „JSP“ ir „SiteMesh“ filtrai, pirmiausia turite įdėti „Acegi“ filtrą, po jo - atitinkamai JSP ir „SiteMesh“ filtrus.

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