2010-06-18 14 views

risposta

7

Sì.

Tuttavia, suggerirei di farlo utilizzando i filtri del servlet anziché sul servlet stesso.

http://brendangraetz.wordpress.com/2010/06/17/use-servlet-filters-for-user-authentication/

Seguire la procedura in questo post, e l'override del metodo isAuth() tale che esegue l'autenticazione a tuttavia molte modalità che si desidera. Nel codice (molto approssimativa, non testata):

@Override protected boolean isAuth() 
{ 
    String authMode = (String)(getSession(true).getAttribute("authMode")); 
    if (authMode == null) { return false; } 
    if (authMode.equals("open id") { 
     //do open id authentication steps here 
     //return true if authentication passes 
    } 
    else if (authMode.equals("some other authentication") { 
     //do some other authentication steps here 
     //return true if authentication passes 
    } 
    ... 
    return false;  
} 

Io parto dal presupposto, naturalmente, che già sapete come implementare le fasi di autenticazione in ciascuna modalità singolarmente.

Il "trucco" consiste nel memorizzare un valore nella sessione HTTP, immediatamente dopo che l'utente esegue l'autenticazione di accesso, nella sessione HTTP. Sulla base di questo valore, il filtro saprà cosa deve controllare o interrogare qualsiasi cosa venga specificata prima di caricare il servlet.

+0

Impressionante, questo è esattamente quello che stavo cercando! Mi piacerebbe avere un rappresentante sufficiente per votare! – KPthunder

+0

@KPthunder: Non preoccuparti, sono felice che funzioni per te! – bguiz

+0

Non importa, ora ho un rappresentante! – KPthunder

0

Sì, è possibile, ma tende ad essere un po 'complicato da implementare.

Ad esempio, SpringSecurity supporta prontamente l'autenticazione locale, OpenId, X509 e altri schemi, ma combinandoli in modo che l'utente disponga di modi alternativi di accesso richiede classi personalizzate e collegamenti personalizzati.

1

Un altro modo per eseguire l'autenticazione multipla è con JAAS, il servizio di autenticazione e autorizzazione Java. Utilizzando JAAS, puoi impilare vari moduli di autenticazione uno sopra l'altro e puoi configurare quale modulo di autenticazione eseguire e quale no. Questo è chiamato PAM (modulo di autenticazione pluggable). Cerca "J2SE JAAS" su Google o dai un'occhiata a http://server.pramati.com/docstore/1270002/index.htm. Questi dovrebbero aiutarti a iniziare se decidi di seguire questa strada.

Problemi correlati