konto usunięte
Temat: Mapowanie ról - Glassfish
Mam aplikację, w której używam deklaratywnego określania bezpieczeństwa komponentów EJB na poziomie całych klas jak i poszczególnych metod (@RolesAllowed, itd.)Autoryzacja odbywa się poprzez jdbcRealm, a mapowanie grup zawartych w bazie danych zawarte jest w pliku sun-application.xml:
<sun-application>
<security-role-mapping>
<role-name>GUEST</role-name>
<principal-name>GUEST</principal-name>
</security-role-mapping>
<security-role-mapping>
<role-name>ADMIN</role-name>
<group-name>ADMIN</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>PATIENT</role-name>
<group-name>PATIENT</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>DOCTOR</role-name>
<group-name>DOCTOR</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>REGISTRAR</role-name>
<group-name>REGISTRAR</group-name>
</security-role-mapping>
</sun-application>
4 role (ADMIN, DOCTOR, PATIENT, REGISTRAR) są mapowane na grupy o odpowiednich (takich samych) nazwach z bazy danych, natomiast rola GUEST jest mapowana na użytkownika GUEST - chodzi tutaj o to, że ma być to domyślna rola dla wszystkich nieautoryzowanych użytkowników aplikacji. Użytkownika GUEST mam zdefiniowanego na serwerze jako domyślnego, gdy nie podano żadnego innego, tzn nie nastąpiło "zalogowanie się".
Wynika z tego (teoretycznie), że użytkownik o nazwie (principal) GUEST powinien należeć do roli GUEST. Tak więc mam komponent EJB przeznaczony dla tej roli, dla którego określiłem @RolesAllowed("GUEST") na poziomie całej klasy i gdy próbuję wywołać metodę tego komponentu dostaje piękny wyjątek AccessLocalException, co oznacza, że użytkownik GUEST nie należy jednak do roli GUEST. Sprawdzam zatem czy faktycznię wywołuję tą metodę jako GUEST - wynik pozytywny, użytkownik wywołujący to GUEST! więc wychodzi na to, że mapowanie jest złe :[. Próbuję zatem wykonać mapowanie w plikach sun-web.xml albo sun-ejb-jar.xml, lecz niestety sytuacja nadal pozostaje bez zmian.
Czy ktoś z Was miał może podobny problem i mógłby mi podpowiedzieć jak sobie z tym poradził? ...chciałem to także rozwiązać, w taki sposób, aby użytkownik bez grupy (GUEST) był przydzielany do jakiejś domyślnej grupy, lecz nie znalazłem nigdzie sposobu na to, jak tego dokonać, tzn określić domyślną grupę...
Będę wdzięczny za wszelką pomoc