2010-06-18 3 views

Répondre

7

Oui.

Cependant, je suggère de le faire en utilisant des filtres de servlet au lieu de sur le servlet lui-même.

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

Suivez les étapes de ce poste, et remplacer la méthode isAuth() telle qu'elle effectue l'authentification cependant de nombreux modes que vous souhaitez. En (très rugueux, non testé) Code:

@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;  
} 

Je suppose bien sûr que vous savez déjà comment mettre en œuvre les étapes d'authentification dans chaque mode individuellement. La «astuce» consiste à stocker une valeur dans la session HTTP, immédiatement après que l'utilisateur a effectué l'authentification de connexion, dans la session HTTP. Basé sur cette valeur, le filtre saura ce qu'il doit vérifier ou interroger tout ce que vous spécifiez avant de charger le servlet.

+0

Super, c'est exactement ce que je cherchais! J'aurais aimé avoir assez de rep pour voter ça! – KPthunder

+0

@KPthunder: Pas de soucis, je suis heureux que cela fonctionne pour vous! – bguiz

+0

Peu importe, j'ai maintenant rep! – KPthunder

0

Oui, c'est possible, mais cela a tendance à être un peu compliqué à implémenter. Par exemple, SpringSecurity prêt à l'emploi prend en charge l'authentification locale, OpenId, X509 et d'autres systèmes, mais en les combinant pour que l'utilisateur ait d'autres façons de se connecter nécessite des classes personnalisées et un câblage personnalisé.

1

Une autre façon d'effectuer une authentification multiple est de contacter JAAS, le service d'authentification et d'autorisation Java. À l'aide de JAAS, vous pouvez empiler plusieurs modules d'authentification les uns sur les autres et vous pouvez configurer le module d'authentification à exécuter ou non. C'est ce qu'on appelle PAM (module d'authentification enfichable). Recherchez "J2SE JAAS" sur Google ou jetez un oeil à http://server.pramati.com/docstore/1270002/index.htm. Ceux-ci devraient vous aider à démarrer si vous décidez d'emprunter cette route.