2010-03-31 6 views
2

J'ai implémenté avec succès l'authentification basée sur les formulaires, et maintenant je veux obtenir le nom d'utilisateur et le mot de passe pour initialiser l'objet de session dans javamail des servlets. Comment puis je faire ça? Je peux getlogin nom d'utilisateur en utilisant la méthode request.getRemoteUser(), mais je ne sais pas comment obtenir le mot de passe.Comment obtenir le mot de passe de connexion dans les servlets

Si je crée un objet de la session comme:

authentication = new PasswordAuthentication(user,password); 
Properties props = new Properties(); 
props.put("mail.host", "localhost"); 
props.put("mail.debug",true); 
props.put("mail.store.protocol", "pop3"); 
props.put("mail.transport.protocol", "smtp"); 
Session session = Session.getInstance(props, this); 

alors comment puis-je obtenir des messages de la boîte de réception de serveur de messagerie basé sur le nom d'utilisateur particulier et mot de passe, si je ne passe pas de mot de passe servlets à objet PasswordAuthentication?

Répondre

3

L'API Java EE/Servlet ne l'autorise pas. Vous devez obtenir le mot de passe par nom d'utilisateur à partir de la même source de mot de passe que le conteneur ou externaliser la source du mot de passe utilisateur afin que le conteneur et votre code puissent l'utiliser, par exemple une base de données. Vérifiez la documentation du conteneur en question en utilisant le mot-clé "Realm". Puisque vous semblez utiliser Tomcat (en fonction de l'historique de vos questions), here est un exemple ciblé Tomcat, par exemple le JDBCRealm.

0

Vous pouvez placer un gestionnaire javascript "onClick" sur le bouton de soumission du formulaire de connexion, en exécutant un appel AJAX à une servlet qui stocke le mot de passe. Il viole cependant le cadre de sécurité.
Une meilleure idée est d'avoir une fonction de porte-monnaie "sécurisé", protégée par l'authentification J2EE. Cette fonction récupérerait votre mot de passe de messagerie d'une base de données ou LDAP. Bien sûr, dans ce cas, la base de données devrait stocker vos mots de passe dans un texte clair ou un format obscurci. Il est encore mieux d'utiliser un authentificateur externe (authentification unique) pour le servlet et le serveur de messagerie, mais cela n'est possible que s'il existe un fournisseur d'authentification qu'ils prennent en charge tous les deux.