[Javalist] role-group megfeleltetes

Zoltán Bernát bernatzoltan at gmail.com
2012. Feb. 27., H, 00:44:55 CET


Sziasztok!

Autentikacios problema.
EE, webkontener autentikacio (jdbc realm, de ez mellekes). A
web.xml-ben absztrakt role-ok definialasa, a glassfish-web.xml-ben
mappingolasa valos group-okra, asszem ugy ahogy kell. (tokeletesen
muxik a kontener autentikacio a webretegben)

Innentol indul a problemasabb resz. Ket dologgal van gondom:

1. EJB reteg (webretegbol hivva):
context.getCallerPrincipal().getName() mukodik, jol atjon a
webretegbol a user principal
Az ejb retegnek viszont sajat role descriptora van, az nem jon at a webretegbol.
Azaz a web.xml-ben es a glassfish-web.xml-ben definailt role-okat ujra
definialni kell az ejb retegben.
A ....\build\classes\META-INF\-ben levo ejb-jar.xml (absztrakt
szerepek definialasa) es a
glassfish-ejb-jar.xml (absztrakt szerepek valos groupokhoz(DB tabla)
kotese) szolgal erre.
A ket descriptorbol az ejb-jar.xml absztrakt szerep definialasa nem mukodik.
(java.lang.IllegalStateException: No mapping available for role
reference vendeg)
("vendeg" absztrakt szerep es "guest" valodi adatbazis rekord a group tablaban)
A glassfish-ejb-jar.xml absztrakt szerepek valos groupokhoz(DB tabla)
kotese viszont igen, mert ha
a kodban annotalom az absztrakt szerepet peldaul igy:
@DeclareRoles({"vendeg"}) akkor
mukodik a context.isCallerInRole("vendeg") kod, nem dob kivetelt, igaz
erteket ad, azaz tudja a
kontener, hogy az adott user a "vendeg" szerepben van, ezt pedig csak
onnan tudhatja, ha ismeri a user
valos groupjat, mert a user avval kotodik az absztrakt role-jahoz.
ilyenem van az ejb-jar.xml-ben:
<assembly-descriptor>
    <security-role>
        <role-name>vendeg</role-name>
    </security-role>
</assembly-descriptor>

2. Hozzaferheto e programozottan (kodbol) az absztrakt szerep - valos
group hozzarendeles?
Tehat megtudhatom-e, hogy a "vendeg" abszrakt szerephez a "guest"
adatbazisbeli rekord tartozik,
ahogyan ez  glassfish-ejb-jar.xml-ben deklaralva van.
(a glassfish-ejb-jar.xml-t nyilvan nem olvashatom be a kodban, hogy
kiszedjem ezeket az infokat)
Peldaul egy adatbazis tablaban egy group-ot kotok egy tabla egy
rekordjahoz. (foreign kulccsal akar, vagy anelkul)
Szeretnem tudni a kodban, hogy az EJB-t hivo user jogosult-e a
rekordbol kinyert objetum manupulalasara.
Viszont a csak olyat tudok tenni, hogy:
context.isCallerInRole("vendeg"), amibol tudom a kliens absztrakt
szerepet,
es olyat, akar peldaul egy sql select-tel milyen groupban levo user
ferhet a kerdeses rekordhoz. (guest)
Azaz, ha nem tudom, hogy a vendeg megfelel-e a  guest-nek, akkor
hogyan hozok dontest?
Kicsit hosszu voltam, elnezest.

Koszi.


További információk a(z) Javalist levelezőlistáról