J'écris un JACC
fournisseur.
En cours de route, cela signifie mettre en œuvre un PolicyConfiguration
.
Le PolicyConfiguration
est responsable de l'acceptation des informations de configuration du serveur d'applications, telles que les autorisations accordées à quels rôles. Ceci afin qu'un Policy
plus tard puisse prendre des décisions d'autorisation lorsqu'il lui est remis des informations sur l'utilisateur actuel et ce qu'il essaie de faire.
Cependant, il ne fait pas partie du PolicyConfiguration
contrat (atroce) de maintenir un mappage entre les rôles et leurs permissions, et Principals
qui sont assignés à ces rôles.
En règle générale - toujours, vraiment - un serveur d'applications héberge ce mappage. Par exemple, sur Glassfish, vous affectez cette cartographie en fournissant des choses 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é admins
.)
Je voudrais réutiliser les fonctionnalités fournies par ces fichiers, et je voudrais le faire pour un éventail de serveurs d'applications aussi large que possible.
Voici - de manière totalement arbitraire - l'opinion 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 mappage principal-rôle dans - pour commencer - Glassfish et JBoss à partir d'un PolicyConfiguration
? S'il y a une façon standard de le faire que je ne connais pas, je suis toute oreille.
la source
Because JSR-115 does not define how to address role mapping, WebLogic JACC classes are used for role-to-principal mapping.
voir docs.oracle.com/cd/E24329_01/web.1211/e24485/…Réponses:
La réponse courte est: il n'y a pas de méthode standard pour 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 délègue donc la responsabilité de conserver ces mappages à l'implémentation du fournisseur JACC. À partir de la documentation (voir:
PolicyConfiguration.addToRole
méthode ):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
.la source
PolicyContextHandler
enregistrement spécifiquement enregistré par le fournisseur à cette fin, par exemple) n'indique le contraire. Un autre fournisseur pourrait également ignorer complètement la notion de rôles (et donc celui fourni par le conteneurPolicyConfiguration
), fonctionnant uniquement sur les mappages principal à autorisation (fournis par l'application) (et lorsque ces autorisations ne doivent pas être limitées à celles de JACC).