81 votes

JAAS pour les êtres humains

Je vais avoir du mal à comprendre JAAS. Tout cela semble plus compliqué que ce qu'il devrait être (en particulier le Soleil tutoriels). J'ai besoin d'un tutoriel ou d'un exemple sur la façon de mettre en œuvre la sécurité (authentification + autorisation) dans l'application java basée sur Struts + Spring + Hibernate avec la coutume de l'utilisateur du référentiel. Peut être implémentée à l'aide d'ACEGI.

52voto

lsiu Points 1346

D'autres utilisateurs ont fourni quelques liens utiles ci-dessus donc je ne vais pas vous embêter avec des liens. J'ai fait une recherche similaire dans JAAS de l'application web, et a couru dans un esprit "barrage" jusqu'à ce que je de réaliser enfin JAAS est un cadre de la lutte contre la sécurité à une autre "couche" puis des applications web dans le Monde Java. Il est construit pour lutter contre les problèmes de sécurité dans Java SE pas Java EE.

JAAS est un cadre de sécurité intégré pour la sécurisation des choses à un niveau beaucoup plus bas du web-application. Quelques exemple de ces choses sont code et les ressources disponibles au niveau de la JVM, par conséquent, toutes ces possibilité de définir la politique de fichiers dans la JVM.

Cependant, depuis Java EE est construite au-dessus de Java SE, quelques modules de JAAS ont été réutilisés dans Java EE de la sécurité tels que la LoginModules et des Rappels.

Notez qu'en plus de Java EE de sécurité, il est aussi le Printemps de sécurité (anciennement connu sous le Acegi), qui est comparable à natif de Java EE de sécurité s'attaque à beaucoup plus de "couche" dans la sécurisation des applications web de problème. C'est une sécurité mise en œuvre et n'est pas construit sur le sommet de la norme Java EE de sécurité, bien qu'il se comporte de la même manière, à de nombreux égards.

Pour résumer, sauf si vous êtes à la recherche pour obtenir des ressources dans le Java SE niveau (classes, les ressources du Système), je ne vois pas vraiment l'utilité de JAAS autres que l'aide de la commune de la classe et des interfaces. Suffit de se concentrer sur l'utilisation de Ressort de Sécurité ou de plain old Java EE de sécurité qui, à la fois de résoudre beaucoup de communes de sécurité des applications web de problèmes.

23voto

11voto

Sloin Points 6086

javax.la sécurité est à mon humble avis trop compliqué de l'API. Par conséquent, il existe des réalisateurs de non seulement LoginModules, mais l'ensemble de l'authentification et de l'autorisation de l'api, qui crée une couche d'abstraction au-dessus, comme l'Authentification Et l'Autorisation des gestionnaires.

Pour commencer, il est bon à imprimer cela dans votre mémoire.

Deuxièmement, à mon humble avis le plus simple d'installation et d'aller à la bibliothèque pour JAAS est Jboss PicketBox. Il dit comment faire de l'authentification et de l'autorisation par le biais d'JBossAuthenticationManager et JBossAuthorizationManager ... Facilement configurable via XML ou des Annotations. Vous pouvez l'utiliser pour gérer à la fois les applications web et les applications autonomes.

Si vous besoin de l'autorisation de la partie pour la gestion de l'accès au dépôt, dans les conditions de l'ACL pour les ressources, c'est ce que vous êtes à la recherche pour vous.

Problème avec la sécurité de l'est, qui, généralement, vous avez besoin de le personnaliser en fonction de vos besoins, de sorte que vous pouvez vous retrouver à mettre en œuvre :

LoginModule - vérifie le nom d'utilisateur + Mot de passe

CallbackHandler est utilisé comme cela, new LoginContext("Sample", new MyCallbackHandler());

CallbackHandler est transmis à la sous-jacentes LoginModules de sorte qu'ils peuvent communiquer et interagir avec les utilisateurs - qui demande un nom d'utilisateur et mot de passe via une interface utilisateur graphique, par exemple. Donc, à l'intérieur de la Gestionnaire, vous obtenez le nom d'utilisateur et le mot de passe de l'utilisateur et il est passé à la LoginModule.

LoginContext - ensuite, vous appelez simplement lc.login(); et authentifier les informations d'identification. LoginContext est rempli avec le Sujet authentifié.

Cependant Jboss picketbox vous donne vraiment un moyen facile d'aller, sauf si vous avez besoin quelque chose de spécifique.

8voto

Arjan Tijms Points 21682

lsiu la réponse est l'un des quelques réponses ici que vraiment "obtenir" ;)

L'ajout de la réponse à cette question, une très bonne référence sur ce sujet est ce qui est Arrivé à JAAS?.

Il explique comment JASPIC est le lien dans Java EE entre la Servlet, EJB modèles de sécurité et potentiellement une connexion JAAS module, mais que, dans de nombreux cas, JAAS rôle est réduit à celui d'un relativement simple nom d'utilisateur et les rôles de fournisseur de Java EE.

Du même auteur est JAAS dans l'Entreprise, qui est un ancien article mais offre beaucoup d'historique sur les raisons de la Java SE (JAAS) et Java EE modèles divergent comme ils l'ont fait.

Dans l'ensemble, mais quelques types de JAAS sont utilisés directement dans Java EE, fondamentalement Principal , Subject, et CallbackHandler. Les deux derniers sont principalement utilisés par JASPIC. J'ai expliqué JASPIC dans l'article la mise en Œuvre de conteneur d'authentification dans Java EE avec JASPIC.

2voto

matt b Points 73770

Je ne peux pas parler trop de JAAS lui-même, mais ce "étapes" guide sur le Printemps de Sécurité et le manuel de référence sont à la fois assez de bonnes ressources sur la Sécurité Printemps - si votre installation est quelque chose de simple, vous n'avez pas vraiment besoin de faire beaucoup plus que de lire ces.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X