2013-03-05 13 views
6

Używam aplikacji internetowej JavaEE 6 na Glassfish 3. Używam JAAS z jdbcRealm i domyślną zasadą do mapowania ról. W mojej bazy danych mam tabela mapowania nazw użytkowników do swoich ról:Dlaczego listę ról zabezpieczeń w pliku web.xml, gdy są w bazie danych jdbcRealm?

username | role 
----------+------- 
john  | admin 
mary  | user 

Dlaczego muszę notować te role po raz kolejny w moim web.xml?

<security-role> 
    <role-name>admin</role-name> 
</security-role> 
<security-role> 
    <role-name>user</role-name> 
</security-role> 

Bez tego isUserInRole() zawsze zwraca false.

+0

wygląda bardzo blisko http://stackoverflow.com/questions/5294252/confusing-about-security-role-in-web-xml –

+0

To nie tak naprawdę, chociaż dotyczą one sfer bezpieczeństwa. –

Odpowiedz

7

Nie definiujesz ponownie ról zabezpieczeń w web.xml. Lista ich, aby serwer aplikacji wiedział o ich wykorzystaniu w kodzie.

Po wdrożeniu zabezpieczonej aplikacji serwer aplikacji odczytuje deskryptor wdrażania, aby uzyskać informacje o konfiguracji zabezpieczeń. Wie o rolach, które są używane w twojej aplikacji. Aplikacja może następnie korzystać z ról i oczekiwać, że serwer aplikacji będzie mógł je odwzorować na użytkowników i grupy (które ostatecznie zostaną ponownie przekazane użytkownikom, ponieważ użytkownicy są najbezpieczniejszymi elementami budującymi bezpieczeństwo).

Mówiąc o mapowaniu ról dla użytkowników, tam właśnie pojawia się dziedzina. Oferuje mapowanie, dzięki czemu wiesz, że rola X w deskryptorze wdrażania mapuje się do roli X w bazie danych, która z kolei jest mapowana do użytkowników A i B

Baza danych używana przez jdbcRealm ma dokładnie te same role, ponieważ jest kluczem do użytkowników, których serwer aplikacji musi mapować do ról w aplikacji.

To, czego używasz w kodzie i deskryptorze wdrażania, jest logiczną nazwą grupy użytkowników, która została rozwiązana dla prawdziwych użytkowników poprzez mapowanie oferowane przez jdbcRealm.

+0

W mojej prostej aplikacji "cześć-świat"; Nie określiłem znacznika . Nadal wszystko działa zgodnie z oczekiwaniami. tj. przeglądarka prosi o uwierzytelnienie. Wprowadzony użytkownik i jego rola jest poprawnie identyfikowana przez tomcat. Czy to jest po prostu fajna funkcja? –

Powiązane problemy