JACC 提供程序如何使用部署在其上的服务器的主体到角色映射工具?

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

在这个过程中,这意味着实现一个 PolicyConfiguration

PolicyConfiguration负责从应用程序服务器接收配置信息,比如哪些权限应该由哪些角色负责。这样,Policy稍后就可以在交给 关于当前用户的信息时做出授权决定,以及他想要做什么。

然而,维护角色及其权限和分配给这些角色的 Principals之间的映射并不是 PolicyConfiguration(糟糕的)契约的一部分。

通常——实际上总是——应用程序服务器保存这种映射。例如,在 Glassfish 上,通过向 JavaEE 模块提供 sun-web.xmlsun-ejb-jar.xml等内容来影响这种映射。(这些特定于供应商的文件负责说明,例如,superusers是一个将被分配 admins应用程序角色的组。)

我希望重用这些文件提供的功能,并且希望尽可能广泛地对应用程序服务器进行重用。

这里是——完全武断地—— IBM 对这个问题的看法,这似乎证实了我的猜测,即 我想做的基本上是不可能的。(对我来说,这个特殊的 JavaEE 协议不值得印刷在纸上的更多证据。)

我的问题是: 对于初学者来说,如何从 PolicyConfiguration中获得 Glassfish 和 JBoss 中的主体到角色映射信息?如果有我不知道的标准方法,我洗耳恭听。

6777 次浏览

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

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

策略提供程序的工作是确保所有 添加到角色的权限被授予“映射到 角色」。

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