Mon application Web dispose d'une zone sécurisée à laquelle les utilisateurs se connectent via une page JSP. La JSP envoie le nom d'utilisateur et le mot de passe à une servlet, qui vérifie ensuite si les informations d'identification des utilisateurs sont valides. Si elles sont valides, l'utilisateur est dirigé vers la ressource sécurisée. Comment puis-je m'assurer que les utilisateurs ne peuvent pas simplement accéder à la ressource sécurisée sans valider d'abord?Vérification de l'authentification des utilisateurs dans Java Web App
Répondre
Une approche commune est de mettre un jeton dans la session de l'utilisateur à savoir
session.setAttribute("loggedIn", "true");
ou même
session.setAttribute("loggedInUser", "someUserName");
et vérifiez que sur une page qui devrait être fixé. Une bonne stratégie consiste à effectuer la vérification à l'aide d'un filtre de servlet que vous attachez à une page à sécuriser. Si elles ne réussissent pas la vérification, le filtre peut rediriger vers la page de connexion. Voir aussi ici: http://java.sun.com/products/servlet/Filters.html
Ceci est un bon article sur l'utilisation de filtres pour l'authentification aussi: http://www.developer.com/java/ent/article.php/3467801
Pourquoi cette approche serait-elle meilleure que l'authentification gérée par conteneur? – erickson
Cela dépend de vos besoins. Pour une application simple, c'est plus facile, mais cma est une bonne solution robuste pour des besoins plus avancés. Comme toujours, votre kilométrage peut varier. – mtruesdell
Je préférerais quelque chose comme, session.setAttribute ("user", userBean); Bien sûr, sans informations sensibles. –
Assurez-vous sûr que les gens ont toujours accès à votre application par un seul servlet, où le servlet dispataches la demande à une page JSP, et retourne la réponse résultante au navigateur. De cette façon, vous serez toujours en contrôle de ce qui se passe parce qu'il y a un seul point d'entrée.
Une approche différente consiste à avoir une variable de session (côté serveur, ou même dans un cookie) qui est vérifiée par chaque JSP qui nécessite une authentification.
Quel combat en utilisant la sécurité dans votre web.xml contraint:
<security-constraint>
<web-resource-collection>
<web-resource-name>Secure</web-resource-name>
<url-pattern>/secure/*</url-pattern>
</web-resource-collection>
Voir, par exemple, cette question: http://stackoverflow.com/questions/344474/form-authentication-on-website –
La sécurité est vraiment difficile d'obtenir le droit. Beaucoup plus que vous ne le pensez habituellement. L'utilisation d'un cadre (Acegi vient à l'esprit), ou la section standard "" de web.xml comme LenW pointed out est un must! Au moins, utilisez un filtre pour gérer la partie autorisation de votre sécurité.
Je n'aime pas vraiment la solution d'utiliser un seul point d'entrée (comme suggested by Rolf). Cela me semble une contrainte artificielle mise sur votre architecture. Et il y a beaucoup de bonnes raisons d'avoir plusieurs servlets dans une application Web. Quoi que vous fassiez, n'utilisez pas une technique où vous vous fiez au code manuel sur chaque page (par exemple: chaque JSP commençant par "if user_authentified ..."). Vous oublierez de le mettre quelque part ...
- 1. Initialisation Java Web App
- 2. Vérification des utilisateurs de Windows Vista
- 3. Comment interrogez-vous l'ensemble des utilisateurs de Google App Domain dans votre projet Google App Engine?
- 4. Connexion au site Web dans Java + Google App Engine
- 5. de Windows App ou Web App Local
- 6. Questions d'architecture Web App
- 7. Printemps MVC web app i18n
- 8. Créer des listes de plusieurs utilisateurs en tant que propriété de modèle dans Google App Engine
- 9. auto-rejoindre dans google app engine (java)
- 10. API Webservice pour mon application App GWT Java App
- 11. Page Web ASP Déconnexion des utilisateurs
- 12. Crypter les données des utilisateurs dans les applications Web
- 13. Vérification de la connexion LDAP (Java)
- 14. Importer des fichiers dans Google App Engine
- 15. ASP.Net - Vérification des détails des utilisateurs à partir de Business Layer
- 16. Authentification des utilisateurs dans ASP.NET
- 17. Liste de vérification des étapes pour sécuriser l'application web asp.net
- 18. Stockage des images téléchargées sur Google App Engine avec Java
- 19. Services Web avec Google App Engine
- 20. Vérification de l'écoute d'un autre serveur Web
- 21. Problème avec la peinture dans Java App Swing en Java 1.6
- 22. Solution de vérification des liens
- 23. Java- vérification de la valeur dans un tableau multidimensionnel
- 24. Utilisateurs et utilisateurs SharePoint anonymes recherchent des résultats de base du Web partie
- 25. Erreur de compilation Web App - Référence ASP.NET
- 26. Vérification simplifiée des limites pour la liste Java
- 27. Vérification de l'état du site Web dans .NET
- 28. OCaml: Type Vérification des objets
- 29. Limiter/contrôler la capacité des utilisateurs à imprimer en Java
- 30. suivre les progrès des utilisateurs sur le site Web
Je suppose que l'authentification déclarative n'est pas une option pour l'application (authentification gérée par conteneur via le descripteur de déploiement). – McDowell