我正在写一个JACC
提供者。
在此过程中,这意味着实施PolicyConfiguration http://download.oracle.com/javaee/6/api/javax/security/jacc/PolicyConfiguration.html.
The PolicyConfiguration
负责从应用程序服务器接受配置信息,例如哪些权限赋予哪些角色。这使得一个Policy http://download.oracle.com/javase/6/docs/api/java/security/Policy.html稍后可以在交付时做出授权决定有关当前用户的信息 http://download.oracle.com/javase/6/docs/api/java/security/ProtectionDomain.html以及他正在尝试做什么。
然而,它不属于PolicyConfiguration
的(残暴的)合约来维护角色及其权限之间的映射,以及Principals
分配给这些角色的人员。
通常(实际上总是)应用程序服务器容纳此映射。例如,在 Glassfish 上,您可以通过提供以下内容来影响此映射sun-web.xml
and sun-ejb-jar.xml
等等与您的 Java EE 模块相关。 (这些特定于供应商的文件负责说明,例如,superusers
是一个要分配应用程序角色的组admins
.)
我想重用这些文件提供的功能,并且我想为尽可能广泛的应用程序服务器这样做。
这是——完全武断的——IBM 对此事的看法,这似乎证实了我的怀疑:我想做的基本上是不可能的 http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/csec_jaccextensions.html。 (对于我的情况来说,这个特定的 Java EE 合同不值得打印在纸上。)
我的问题:对于初学者来说,我如何从 Glassfish 和 JBoss 中获取主体到角色的映射信息PolicyConfiguration
?如果有我不知道的标准方法,我会洗耳恭听。
简短的回答是:没有标准的方法来做到这一点。
尽管 Glassfish 和 JBoss 支持主体到角色映射,但 JACC 并不假设所有容器都支持,因此它将保留这些映射的责任委托给 JACC 提供程序实现。从文档(参见:PolicyConfiguration.addToRole method http://docs.oracle.com/javaee/6/api/javax/security/jacc/PolicyConfiguration.html#addToRole%28java.lang.String,%20java.security.Permission%29):
保单提供者的职责是确保所有
添加到角色的权限被授予“映射到
角色”。
换句话说,您需要在每个容器的 JACC 提供程序中自行实现这一点。例如,对于 JBoss,您可以使用以下子类之一AbstractRolesMappingProvider https://access.redhat.com/site/documentation/en-US/JBoss_Enterprise_Application_Platform/6.1/html/API_Documentation/files/javadoc/org/jboss/security/mapping/providers/role/AbstractRolesMappingProvider.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)