web-dev-qa-db-fra.com

Comment un fournisseur JACC peut-il utiliser les fonctions de mappage principal à rôle du serveur sur lequel il est déployé?

J'écris un fournisseur JACC.

En cours de route, cela signifie implémenter un PolicyConfiguration .

PolicyConfiguration est responsable de l'acceptation des informations de configuration du serveur d'applications, telles que les autorisations accordées à quels rôles. C'est ainsi qu'un Policy plus tard peut prendre des décisions d'autorisation lorsqu'il est remis informations sur l'utilisateur actuel et ce qu'il essaie de faire.

Cependant, il ne fait pas partie du contrat (atroce) de PolicyConfiguration de maintenir un mappage entre les rôles et leurs autorisations, et Principals qui sont affectés à ces rôles.

Typiquement - toujours, vraiment - un serveur d'applications héberge ce mappage. Par exemple, sur Glassfish, vous affectez ce mappage en fournissant des éléments comme Sun-web.xml et Sun-ejb-jar.xml et ainsi de suite avec vos modules Java EE. (Ces fichiers spécifiques au fournisseur sont chargés de dire, par exemple, superusers est un groupe auquel le rôle d'application doit être attribué). de admins.)

Je voudrais réutiliser les fonctionnalités fournies par ces fichiers, et je voudrais le faire pour une gamme de serveurs d'applications aussi large que possible.

Voici - totalement arbitrairement - la position d'IBM sur la question, qui semble confirmer mon soupçon que ce que je veux faire est essentiellement impossible . (Plus de munitions pour mon cas que ce contrat Java EE ne vaut pas le papier sur lequel il est imprimé.)

Ma question: comment puis-je obtenir ces informations de correspondance principal-rôle dans - pour commencer - Glassfish et JBoss depuis un PolicyConfiguration? S'il y a une façon standard de le faire que je ne connais pas, je suis tout ouïe.

154
Laird Nelson

La réponse courte est: il n'y a pas de moyen standard de le faire.

Bien que Glassfish et JBoss prennent en charge les mappages principal à rôle, JACC ne suppose pas que tous les conteneurs le font, et il délègue donc la responsabilité de conserver ces mappages à l'implémentation du fournisseur JACC. De la documentation (voir: PolicyConfiguration.addToRole méthode ):

Il incombe au fournisseur de stratégie de s'assurer que toutes les autorisations ajoutées à un rôle sont accordées aux principaux "mappés au rôle".

En d'autres termes, vous devez l'implémenter vous-même dans votre fournisseur JACC pour chaque conteneur. Pour JBoss, par exemple, vous pouvez utiliser l'une des sous-classes de AbstractRolesMappingProvider .

3
Diego