JACC提供程序如何使用其部署的服务器的Principal-to-role映射工具?

时间:2011-01-27 22:00:42

标签: security java-ee glassfish authorization jacc

我正在撰写JACC提供商。

一路上,这意味着实施PolicyConfiguration

PolicyConfiguration负责接受来自应用程序服务器的配置信息,例如哪些权限产生于哪些角色。这样Policy以后information about the current user可以在递交I want to do is essentially impossible以及他正在尝试做的事情时作出授权决定。

但是,它不是PolicyConfiguration(非常)合同的一部分,用于维护角色及其权限之间的映射,以及分配给这些角色的Principals

通常 - 总是,确实 - 应用程序服务器容纳此映射。例如,在Glassfish上,您可以通过向Java EE模块提供sun-web.xmlsun-ejb-jar.xml之类的内容来影响此映射。 (这些特定于供应商的文件负责说,例如,superusers是一个将被分配admins的应用程序角色的组。)

我想重用这些文件提供的功能,我希望尽可能广泛地使用应用程序服务器。

这是 - 完全随意 - IBM对此事的看法,这似乎证实了我对{{3}}的怀疑。 (对于我的情况,更多的弹药,这个特定的Java EE合同不值得它打印的纸张。)

我的问题:如何从PolicyConfiguration中获取Glassfish和JBoss中的首席到角色映射信息?如果有一种我不知道的标准方法,那我就是耳朵。

1 个答案:

答案 0 :(得分:3)

简短的回答是:没有标准的方法可以做到这一点。

尽管Glassfish和JBoss支持主体到角色的映射,但JACC并不假设所有容器都这样做,因此它将这些映射的责任委托给JACC提供程序实现。从文档(参见:PolicyConfiguration.addToRole method):

  

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

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