Uwierzytelnianie i autoryzacja w JavaEE

0

Witam.

Czy mógłby mi ktoś podać jakiegoś linka lub pokrótce wyjaśnić jak zabrać się za autoryzację i uwierzytelnianie w JavaEE. Otóż chciałbym napisać przeciętną stronę z obsługą logowania rejestracji i sprawdzania uprawnień, niestety (lub stety) w javaEE jest do tego jakiś wbudowany system za który nie wiem jak się zabrać. Teoretycznie logowanie możemy opisać w plikach konfiguracyjnych, do klas możemy dodać adnotację @RolesAllowed itp. Jest też opisane jak w glassfish dodawać użytkowników i definiować ich role. Jednak co muszę zrobić żeby zrobić system rejestracji na stronie i dodać własną stronę logowania?
Czy ktoś zna jakiś kompletny tutorial lub może opisać jak to zrobić?

0

Może zainteresuje Cię JAAS?
Np.:
http://javazpiwnicy.blogspot.com/2009/01/zabezpieczenie-strony-przy-uyciu-jaas.html
Sam z tego korzystałem i działa dość uniwersalnie i dobrze.

0
  1. Mam jeszcze jedno pytanie. Powyższa metoda wymaga ekstra ustawiania serwera a ja chciałbym żeby dodatkowa konfiguracja nie była wymagana. Tz czy da się to jakoś zrobić bez bezpośredniej modyfikacji plików konfiguracyjnych serwera?

Np. Znalazłem coś takiego ( http://docs.jboss.org/jbosssecurity/docs/6.0/security_guide/html/Dynamic_Security_Domains.html ) ale nie działa:

<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="urn:jboss:bean-deployer:2.0">
<application-policy name="grapstoreSecurityPolicy">
  <authentication>
    <login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
      <module-option name="dsJndiName">java:/mysqlGrapstoreSecurityPool</module-option>
      <!--<module-option name = "unauthenticatedIdentity">guest</module-option>-->
      <module-option name="principalsQuery">select password from user where login=?</module-option> 
      <module-option name="rolesQuery">select role, rolegroup  from role where login=? </module-option>  
      <module-option name="debug">true</module-option>  
    </login-module>
  </authentication>
</application-policy> 
</deployment>

Niestety to rozwiązanie mi nie działa :/ Zauważyłem że glassfish z którego korzystam ma inne klasy np: com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm

  1. Czy jest możliwość napisania jednej uniwersalnej lokalnej klasy która pozwoliła by na integracje naszej bazy danych z jaas-em?

Edit:
3. Czy da się ustawić różny sposób logowania dla różnych adresów? Tz. np. dla jednych BASIC a dla innych FORM?

0

W samej JavaEE nie ma takiej opciji. Specyfikacja mowi tylko jak takie bezpiecznstwo sie uzywa w aplikacji, a wszelka konfiguracja jest 'vendor dependent'. Dlatego JBoss ma swoje klasy, a GlassFish ma swoje realmy, itp. itd. Z tego wynika, ze takie konfiguracje sa zalezne od serwera.
Mozesz jednak zrobic tak, ze pomijasz cale security JavaEE i pakujesz jakis framework, np. Apache Shiro, wraz z aplikacja, i wraz z nia pakujesz jakies pliki config / tworzysz odpowiedni (sub)schemat bazy danych dla security. Ma to swoje plusy i minusy.

0

Jedna aplikacja webowa moze w standardzie miec tylko jeden machanizm logowania, ewentualne odchyly sa twz. implementation specific i nieprzenosne. Nie wiem co dla Ciebie znaczy rozne adresy? Rozne aplikacje webowe, czy rozne url w obrebie jednej aplikacji? Jesli rozne app, to da sie; jesli ta sama aplikacja, to sie nie da.

1 użytkowników online, w tym zalogowanych: 0, gości: 1