154

我正在写一个JACC提供者。

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

PolicyConfiguration负责从应用服务器接受配置信息,例如哪些权限归属于哪些角色。这样一来,以后可以在获得有关当前用户的信息以及他正在尝试做什么Policy时做出授权决定。

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

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

我想重用这些文件提供的功能,并且我想为尽可能广泛的应用程序服务器这样做。

这是——完全武断的——IBM 对此事的看法,这似乎证实了我的怀疑,即我想做的事情基本上是不可能的。(对于我来说,这个特定的 Java EE 合同不值得打印它的纸张。)

我的问题:我如何从内部获取这个主体到角色的映射信息——对于初学者来说——Glassfish 和 JBoss PolicyConfiguration?如果有一种我不知道的标准方法,我会全神贯注。

4

1 回答 1

3

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

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

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

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

于 2013-10-30T23:15:58.173 回答