Java Authorization Contract for Containers
A Java ACC specifikáció definiál egy megállapodást a Java EE alkalmazás szerver és egy autorizációs házirend szolgáltató között. Minden Java EE konténer támogatja ezt a megállapodást.
Áttekintés
A Java Authorization Contract for Containers (Java ACC) specifikáció (JSR-115) új java.security.Permission osztályokat definiál, melyek megfelelnek a Java 2 Platform, Enterprise Edition (J2EE) autorizációs modellnek. A Java ACC specifikáció definiálja a konténer hozzáférhetőségi döntések kötését az ezen engedély osztályok példányainak operandusaihoz. Definiálja a házirend(policy) szolgáltatók szemantikáját, akik alkalmazzák az új engedély osztályokat, hogy teljesítsék a J2EE autorizációs követelményeit, köztük a következőket: (beleértve a szerepek létrehozását és használatát)
- Szerepek definiálása, mint engedélyek nevezett kollekciója
- Szerepeknek megfelelő engedélyek megadása a megbízónak
- Annak meghatározása hogy egy megbízó megkapta-e egy szerephez tartozó engedélyt
- Az azonosítók definíciója a szerep leképezésekhez, mely összeköti az applikációbeli azonosítókat az applikáció hatáskörű szerep nevekhez
Verziók
- J2EE 1.4 (November 11, 2003) - JACC 1.0
- Java EE 5 (May 11, 2006) - JACC 1.1
- Java EE 6 (Dec 10, 2009) - JACC 1.3
Részletek
JACC része a J2EE specifikációnak és egy szerep alapú modellel definiál egy módszert a szervletek és az ejb konténerek számára a web erőforrások és konténerek biztosítására. J2EE konténerek a kliens azonossága alapján szűkítik a kliens hozzáférését a bennük levő erőforrásokra és szolgáltatásokra.
JACC megállapodások ezt a funkcionalitást erősítik szerepek definiálásával, melyek engedélyek kollekciója és a java.security.Permission osztály alosztályai. Továbbá JACC megállapodások a konténerek számára biztosítanak egy eszközt hozzáférérési döntések meghozatalára ezen engedélyekkel dolgozva, valamint definiál egy mechanizmust mellyel autorizáció szolgáltatók telepítve és konfigurálva lesznek a konténerek általi használathoz.
JACC megállapodások biztosítják a következő előnyöket:
- JACC a biztonsági adminisztrációt és döntéshozatal felelősségét áthelyezi a konténertől a biztonsági szolgáltatóhoz
- JACC elérhető teszi egy közös házirend használatát különböző biztonsági rendszerek között
- JACC külső autorizációs szolgáltatók számára lehetővé teszi hogy bekapcsolódjanak az alkalmazás szerverekbe szabványos interfészeken keresztül a házirendek konfigurálásához és hozzáférhetőségi döntések meghozatalához.
- J2EE rendszer integrátorok meglévő autorizációs házirend infrastruktúrába képesek konténereket integrálni
- Lehetővé teszi a fejlesztők számára hogy használják a J2EE standard biztonsági infrastruktúráját, de a biztonságot adó szolgáltatók transzparensen csatolhatóak legyenek a J2EE 1.4 alkalmazás szerverükbe.
Korábbi definíciók problémáit orvosolja:
- Minden hozzáférhetőségi döntést az alkalmazás szerver hozott, kivéve ha szabadalmazott interfészeket használnak külső pluginekhez
- Nem volt szabvány az alkalmazás szerverek és az autorizációs szolgáltatók integrálására. Nem volt szabványos reprezentálása az alkalmazás biztonsági házirendjeinek (szerepkörök, erőforrások, erőforrások - szerepek leképezés) és nem volt szabványos interfész a hozzáférhetőségi döntésekhez (deklaratív vagy programbeli)
A Java ACC specifikáció definiálja a konténerek használatához az autorizáció szolgáltatók telepítését és konfigurálását oly módon hogy a konténerek engedélyezési döntéshozatalában használatra kerülnek. A specifikáció definiálja azon interfészeket melyeket a szolgáltatónak elérhetővé kell tennie, hogy a konténer telepítő eszközök számára lehetővé tegye a szerepeknek megfelelő engedély kollekciók készítését és menedzselését.
Egy megállapodás három alrészre oszlik:
- A szolgáltató konfigurációs megállapodás
- A házirend konfigurációs megállapodás
- A házirend döntő és végrehajtó megállapodás
A szolgáltató konfigurációs megállapodás definiálja a szolgáltatókkal és konténerekkel szembeni elvárásokat oly módon, hogy házirend szolgáltatók integrálhatóak legyenek a konténerekkel.
A házirend konfigurációs megállapodás definiálja a konténerek telepítő toolok és szolgáltatók közti interakciókat oly módon, hogy támogassa a deklaratív J2EE autorizációs házirend fordítását a J2SE házirend szolgáltatóbeli házirend állításokra.
A házirend döntő és végrehajtó megállapodás definiálja az interakciókat konténer házirend végrehajtó pontok és a szolgáltatók között, akik a J2EE konténerek által igényelt házirend döntéseket implementálják.