JSP connexion avec la sécurité déclarative - Comment l'authentification réelle ne se produit?

StackOverflow https://stackoverflow.com/questions/4024192

Question

Je suis un peu perplexe avec ce que je ne l'ai pas vu beaucoup d'exemples qui me donnaient l'image complète. La meilleure explication que je trouve à ce jour est cette .

En définissant un rôle de sécurité dans web.xml comme « admin » par exemple, et avoir mon formulaire de connexion avec tous les champs nécessaires (c.-à-j_security_check que l'action, et les champs j_username, j_password), comment / où vient l'authentification réelle se produisent?

Je prévois d'utiliser une authentification personnalisée en utilisant nom d'utilisateur / mot de passe (hashes) stockés dans la base de données. Lorsque l'utilisateur envoie le formulaire, comment puis-je faire le conteneur Web Java EE Invoke ma méthode sevlet / haricots ne pas effectuer l'authentification réelle? Je ne l'ai pas remarqué tout lieu d'ajouter un crochet à mon code dans web.xml qui assure l'authentification réelle.

Était-ce utile?

La solution

  

En définissant un rôle de sécurité dans web.xml comme « admin » par exemple, et avoir mon formulaire de connexion avec tous les champs nécessaires (c.-à-j_security_check que l'action, et les champs j_username, j_password), comment / où vient l'authentification réelle se produisent?

Dans la mise en œuvre de servlet, le servletcontainer. Dans Tomcat par exemple, il est fait par le classe AuthenticatorBase (code source ici ).

  

Je prévois d'utiliser une authentification personnalisée en utilisant nom d'utilisateur / mot de passe (hashes) stockés dans la base de données. Lorsque l'utilisateur envoie le formulaire, comment puis-je faire le conteneur Web Java EE Invoke ma méthode sevlet / haricots ne pas effectuer l'authentification réelle? Je ne l'ai pas remarqué tout lieu d'ajouter un crochet à mon code dans web.xml qui assure l'authentification réelle.

Si vous souhaitez continuer à utiliser l'authentification gérée par conteneur, mais voulez vérifier la connexion contre une base de données, vous devez configurer le soi-disant « royaume » en conséquence. On ne sait pas qui servletcontainer que vous utilisez, mais par exemple Tomcat, la documentation est disponible ici: Tomcat 6.0 Royaume HOW-TO .

Si vous voulez vraiment avoir votre propre système d'authentification Homegrown invoqué à la place, alors vous devez déposer le conteneur géré la sécurité et homegrow davantage. Ce qui n'est pas recommandé .

Autres conseils

réelle L'authentification est en train de faire soit par deux manières:

  1. Via une manière exclusive Server, par exemple les * LoginModules dans JBoss, Tomcat ou un BalusC mentionné. Ceux-ci sont différentes pour chaque serveur.
  2. Via JASPIC, qui a été introduit en Java EE 6.

JASPIC à peu près a normalisé les méthodes propriétaires, mais il est une assez API de bas niveau et malheureusement disponible uniquement pour le profil complet de Java EE 6 et 7 mises en œuvre.

Voir Implémentation de l'authentification du conteneur en Java EE avec JASPIC pour plus de détails.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top