2010-08-05 17 views
6

Qual è l'approccio migliore/metodo per implementare la sicurezza in Java EE? (JPA/JSP)Sicurezza Java EE: quale metodo utilizzare?

Sto lavorando su un progetto personale in modo da poter imparare Java EE e io sono un po 'confuso su come affrontare il processo di AUTORIZZAZIONE e AUTENTICAZIONE sul mio sito web.

Ho diversi ruoli e non voglio che determinati utenti accedano a determinate parti del sito web. Quindi sono stato alla ricerca di documenti, tutorial ed altro, ma tutto ciò che trovo risale a più di 3-4 anni fa. C'è qualcosa di più recente che dovrei esaminare?

Ecco alcune delle cose che ho trovato:

http://www.oracle.com/technetwork/developer-tools/jdev/oc4j-jaas-login-module-083975.html

Qualsiasi aiuto sarebbe molto apprezzato !!! :)

risposta

1

Ho recentemente lavorato a un'applicazione Java EE con JAAS. È piuttosto attuale, puoi controllare che sia home page at Oracle.

Funziona con i ruoli, l'autenticazione, ecc

Si può usare in JBoss e Glassfish, probabilmente il resto del culo troppo.

+0

Basta chiedersi, perché tutti pensano che JAAS possa essere utilizzato direttamente in Java EE senza menzionare JASPIC? Vedi http://java.sys-con.com/node/1002315 –

1

Qualcosa di più recente di JAAS è il framework Spring Security. Supporta JSR-350 (EJB 3) e quindi funzionerebbe bene in Java EE.

+0

Sto scoprendo Spring e non smette mai di stupirmi. Ok, ora devo andare a leggere su Spring Security ... –

3

Spring Security. Sebbene sia marchiato come Spring, you might find it useful for web applications; tieni presente che non è necessario scrivere un'app di Spring per utilizzare Spring Security.

Se si desidera attenersi a JAAS, suggerirei di utilizzare uno dei moduli di login del contenitore, solo per iniziare, prima di tentare di scrivere il proprio modulo di login. Sappi che potresti finire per scriverne uno, se i moduli forniti dal contenitore non soddisfano le tue esigenze. E, c'è un buon book on JAAS per aiutarti a capirlo in dettaglio.

Inoltre, dare un'occhiata a Servlet spec 3.0, per vedere come le annotazioni possono essere utilizzate dichiarare i ruoli (@DeclareRoles, che è venuto in servlet spec 2.5) nel servlet stesso, prima di definire quali ruoli hanno accesso a quale metodo HTTP (utilizzando @RolesAllowed). Puoi anche utilizzare annotazioni come @DenyAll e @PermitAll, per consentire o vietare l'accesso a tutti gli utenti. @TransportProtected garantirà l'accesso al metodo HTTP su HTTPS. Tutto ciò che si deve fare è mappare questi ruoli nel codice sorgente, ai ruoli reali nel regno di JAAS; questo spesso viene fatto usando un file descrittore specifico del contenitore.

ADDENDUM

Dal momento che si sta utilizzando JSP e non Facelets o qualsiasi altra tecnologia per il livello di presentazione, si potrebbe essere interessato al JSP tags offered by Spring Security. È molto più pulito mantenere tutti i metadati di autorizzazione in un file web.xml gigantesco.

Per quanto riguarda gli JPA, beh, l'accesso sottostante ad essi viene solitamente applicato ai servlet o agli EJB. Naturalmente, è possibile creare una sicurezza più programmatica, in base alle proprie esigenze: l'utilizzo dei listener di entità potrebbe aiutare in questo processo, in quanto sarebbe in grado di intercettare operazioni di caricamento, aggiornamento e persistenza (se si è così determinati, ma per la maggior parte la sicurezza prima che la logica aziendale venga eseguita di solito è sufficiente).

E oh, dai un'occhiata a JBoss Seam (e sicurezza Seam), perché è un framework di sviluppo di applicazioni completo costruito su Java EE.

+0

Grazie a tutti voi !!! Mi assicurerò di controllare tutto ... :) – Johan