2015-03-24 23 views
11

Sarò onesto. Sono uno sviluppatore da un po 'di tempo ormai, ma è la prima volta che sento JACC e JASPIC. Comprendo che sono standard utilizzati dai fornitori di autorizzazioni, ma in che modo differiscono esattamente da JAAS? e quando useremmo l'uno sull'altro?In termini più semplici, qualcuno può spiegarmi la differenza tra JAAS, JACC e JASPIC?

Ho fatto qualche ricerca iniziale, non è che sono pigro per farlo. E 'solo che gli articoli di lettura su JACC e JASPIC mi hanno un po' sopraffatto e ho bisogno di imparare tutto questo nel più breve tempo possibile perché ho bisogno di implementarlo in uno dei miei prossimi progetti. Sto solo cercando un inizio di corsa sulla mia comprensione.

risposta

20

JAAS è incluso con Java SE ed è principalmente utile per Java SE. Si tratta di sicurezza a livello di codice (ti fidi del codice).

Non è direttamente utile per Java EE, che riguarda la sicurezza a livello di utente (ci si fida dell'utente).

Alcuni server Java EE possono utilizzare qualcosa che è basato su JAAS LoginModules per l'autenticazione, ma questo utilizzo di JAAS non è standard ed è estremamente ridotto rispetto a quanto avviene in Java SE. Per una ragione o per l'altra, a causa di questa gente, la sicurezza in Java EE si chiama JAAS, ma è completamente il contrario.

JASPIC è un punto di estensione che i server Java EE 6+ devono creare e plug-in meccanismi di autenticazione aggiuntivi. Puoi usarlo per creare cose come i meccanismi OAuth, OpenID ecc. JASPIC parla di interazione con il tuo utente. Non dice nulla su come ottenere dati utente da cose come LDAP o un database. Puoi farlo con il tuo codice o chiamando un LoginModule JAAS. JASPIC definisce come JAAS LoginModules può essere collegato al tuo meccanismo personalizzato in un modo più standard. Peccato che non sia ancora al 100% standard, ma almeno meglio.

JACC è un altro punto di estensione ma per i meccanismi di autorizzazione. Puoi usarlo per fare l'autorizzazione in un modo diverso, o semplicemente per controllare l'autorizzazione. JACC rende anche tutti i vincoli di sicurezza che hai definito in web.xml disponibili per il tuo codice. Puoi usarlo per controllare in anticipo se un utente avrà accesso a una pagina. A differenza di JASPIC, JACC è molto difficile da attivare effettivamente nella tua applicazione. Hai bisogno di pasticciare con argomenti JVM ecc.

+0

Grazie per la risposta. –

+0

Molto apprezzato - questo è stato direttamente al punto! Sto usando JBoss che viene fornito con JACC, pronto per l'autorizzazione. Ma per quanto riguarda l'autenticazione, dovrei comunque usare JAAS LoginModules per l'autenticazione o c'è qualcos'altro? Grazie! –

+1

@MatthewCachia Un 'javax.security.auth.message.module.ServerAuthModule' (SAM) è tutto ciò che è necessario implementare per quanto riguarda l'autenticazione portatile. Se si intende integrare il SAM con JBoss in modo portatile, sarà necessario implementare anche un 'AuthConfigProvider' (più un' ServletContextInitializer' che serve come il dichiarante dell'ex con 'AuthConfigFactory' fornito dal contenitore), un' ServerAuthConfig' e un 'ServerAuthContext'. Per il caso d'uso prevalente di un singolo SAM che protegge una singola applicazione, quelli sono relativamente indolore per l'autore. – Uux