Question

J'ai de la difficulté à comprendre JAAS. Tout cela semble plus compliqué qu'il ne devrait l'être (en particulier les tutoriels Sun). J'ai besoin d'un tutoriel simple ou d'un exemple sur la manière d'implémenter la sécurité (authentification + autorisation) dans une application Java basée sur Struts + Spring + Hibernate avec un référentiel d'utilisateurs personnalisé. Peut être implémenté avec ACEGI.

Autres conseils

D'autres utilisateurs ont fourni des liens très utiles ci-dessus, je ne vais donc pas m'embêter avec des liens. J'ai effectué une recherche similaire dans JAAS pour une application Web et j'ai rencontré un "obstacle mental". jusqu'à ce que je réalise enfin que JAAS est un cadre traitant de la sécurité sous un "autre" calque " puis les applications Web dans le monde Java. Il est conçu pour résoudre les problèmes de sécurité dans Java SE et non dans Java EE.

JAAS est un cadre de sécurité conçu pour sécuriser des éléments d’un niveau bien inférieur à celui des applications Web. Quelques exemples de ces choses sont le code et les ressources disponibles au niveau de la machine virtuelle, d'où leur capacité à définir des fichiers de règles au niveau de la machine virtuelle.

Cependant, comme Java EE est construit sur Java SE, quelques modules de JAAS ont été réutilisés dans la sécurité Java EE, tels que LoginModules et Callbacks.

Notez qu'en plus de la sécurité Java EE, il existe également la sécurité Spring (anciennement Acegi), similaire à la sécurité native de Java EE qui s'attaque à un "calque" beaucoup plus élevé. dans le problème de sécurisation de l'application web. Il s’agit d’une implémentation de sécurité distincte qui ne repose pas sur la sécurité Java EE standard, bien qu’elle se comporte de la même manière à bien des égards.

Pour résumer, à moins que vous ne cherchiez à sécuriser des ressources du niveau Java SE (classes, ressources système), je ne vois pas d'utilisation réelle de JAAS autre que l'utilisation de la classe et des interfaces communes. Concentrez-vous simplement sur l’utilisation de Spring Security ou de la sécurité Java EE classique qui résolvent beaucoup de problèmes de sécurité courants des applications Web.

javax.security est à mon sens une API trop compliquée. En conséquence, il existe des implémenteurs non seulement de LoginModules, mais également de l'ensemble de l'API d'authentification et d'autorisation, qui crée la couche d'abstraction ci-dessus, comme Authentication & amp; Gestionnaires d'autorisation.

Pour commencer, il est bon d'imprimer ceci dans votre mémoire.

Deuxièmement, à mon humble avis, la configuration et l’amplification les plus simples. Dans la bibliothèque JAAS, Jboss est PicketBox . Il explique comment effectuer l'authentification et l'autorisation via JBossAuthenticationManager et JBossAuthorizationManager ... Facilement configurable via XML ou des annotations. Vous pouvez l'utiliser pour gérer à la fois des applications Web et des applications autonomes.

Si vous avez besoin du composant d’autorisation pour gérer l’accès au référentiel, c’est ce que vous recherchez, en termes de LCA pour les ressources.

Le problème avec la sécurité est que vous devez généralement l'adapter à vos besoins afin de pouvoir implémenter:

LoginModule : vérifie le nom d'utilisateur et le mot de passe

.

CallbackHandler est utilisé comme ceci new LoginContext ("Exemple", nouveau MyCallbackHandler ());

CallbackHandler est transmis aux LoginModules sous-jacents afin qu'ils puissent communiquer et interagir avec les utilisateurs, en demandant un nom d'utilisateur et un mot de passe via une interface utilisateur graphique, par exemple. Ainsi, dans le gestionnaire, vous obtenez le nom d'utilisateur et le mot de passe de l'utilisateur, qui sont transmis au LoginModule.

LoginContext - vous devez simplement appeler lc.login (); et authentifier les informations d'identification. LoginContext contient le sujet authentifié.

Cependant, la boîte de sélection Jboss vous donne un moyen très facile de vous rendre, sauf si vous avez besoin de quelque chose de spécifique.

La réponse de

Lsiu est l’une des rares réponses à ce problème qui consiste réellement à "l’obtenir". ;)

Pour ajouter à cette réponse, que se passe-t-il de JAAS? .

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

Du même auteur est JAAS dans l'entreprise , qui est un article plus ancien mais explique en détail pourquoi les modèles Java SE (JAAS) et Java EE ont divergé.

Globalement, quelques types de JAAS sont directement utilisés dans Java EE, essentiellement Principal , Objet et CallbackHandler . Les deux derniers sont principalement utilisés par JASPIC. J'ai expliqué JASPIC dans l'article Implémentation de l'authentification de conteneur dans Java EE avec JASPIC .

Je ne peux pas trop parler de JAAS, mais cette "Etapes suggérées" guide sur Spring Security et le manuel de référence sont les deux De bonnes ressources sur Spring Security: si votre configuration est simple, vous n'avez pas vraiment besoin de faire plus que lire ces informations.

Pour consulter un didacticiel purement JAAS, consultez this . Il est vieux mais devrait aider avec les bases de JAAS.

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