JACC提供程序如何使用其所部署服务器的主体到角色映射功能?


154

我正在写一个JACC提供程序。

在此过程中,这意味着实施PolicyConfiguration

PolicyConfiguration是负责从应用服务器,接受配置信息,如哪些权限累积到哪些角色。这样一来,Policy以后的用户就可以在获得有关当前用户的信息时做出授权决定及其所要执行的操作的。

但是,PolicyConfiguration维护角色及其权限之间的映射不是(残暴的)合同的一部分,并且Principals分配给这些角色。

通常-总是-确实-应用服务器包含此映射。例如,Glassfish上,您会影响通过提供这样的事情映射sun-web.xmlsun-ejb-jar.xml与您的Java EE模块等。(这些特定于供应商的文件负责说明,例如,superusers是要为其分配应用程序角色的组admins。)

我想重复使用这些文件提供的功能,并且希望对尽可能多的应用程序服务器重复使用。

这是(完全任意地)IBM对此事的看法,这似乎证实了我的怀疑,即我想做的事基本上是不可能的。(就我的情况而言,更多的弹药是该特定的Java EE合同不值得在其上打印纸张。)

我的问题是:如何从一个入门者的眼镜鱼和JBoss中获得此主体到角色映射的信息PolicyConfiguration?如果有我不知道的标准方法,我会不知所措。


7
您在这个问题上有什么进展吗?我也想写一个JACC提供程序,也想写一个
JASPIC

这听起来并不很看好两种:Because JSR-115 does not define how to address role mapping, WebLogic JACC classes are used for role-to-principal mapping.docs.oracle.com/cd/E24329_01/web.1211/e24485/...
阿尔扬Tijms

2
目前,我对此的看法是,您必须始终确保将JACC提供程序耦合到JASPIC提供程序,因此您也必须编写该JASPIC提供程序。我还没有走这条路线,但是可以在我的桌子上尝试。
尼尔森·尼尔森

@LairdNelson,如果有时间,您可能应该在JASPIC评论周围写一个答案。这听起来很有希望,并且在这个问题上有300个声誉悬赏。
jimhark

5
你好 不试图让任何人保持悬念。:-)我在这里没有答案,我可以赶时间。我只是记得Ron Monzillo告诉我的,以一种可以理解的方式将主体到角色分配“放入” JACC提供程序的唯一方法是将JASPIC实现有效地与其耦合。
Laird Nelson,

Answers:


3

简短的答案是:没有标准的方法可以做到。

尽管Glassfish和JBoss支持主体到角色的映射,但是JACC并不假定所有容器都支持,因此,它将保留这些映射的责任委托给JACC提供者实现。从文档(请参阅:PolicyConfiguration.addToRole方法):

策略提供者的工作是确保将添加到角色的所有权限授予“映射到角色”的主体。

换句话说,您需要在每个容器的JACC提供程序内部实现该实现。例如,对于JBoss,可以使用的子类之一AbstractRolesMappingProvider


顺便说一句,可移植的提供程序可以选择忽略容器角色映射。例如,它可以假定任何委托人都暗指具有相同名称的应用程序角色,除非该应用程序以某种方式(例如,通过PolicyContextHandler提供商为此目的专门注册的内容)以其他方式传达。另一个提供程序也可以完全忽略角色(因此由容器提供PolicyConfiguration)的概念,而不必仅在(应用程序提供的)主体到许可的映射上进行操作(并且这些许可不必限于JACC的许可)。
Uux

旁注2:从Java EE 8开始,1:1组对角色的映射已成为新的默认设置(但是,这只能使我们半途而废,因为仍然必须预先静态声明角色-假设没有自定义JACC提供程序是有效)。
Uux
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.