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

我正在写一个JACC提供者。

一路上,这意味着实施PolicyConfiguration

PolicyConfiguration负责接受来自应用程序服务器的configuration信息,例如哪些权限归属于哪个angular色。 这样一来,以后的Policy就可以在交付关于当前用户的信息以及他正在尝试做什么的情况下做出授权决定。

但是,它不是PolicyConfiguration (恶意)合同中维护angular色及其权限与委派给这些angular色的Principals之间的映射的一部分。

通常情况下,应用服务器总是保存这个映射。 例如,在Glassfish上,通过在Java EE模块中提供诸如sun-web.xmlsun-ejb-jar.xml类的东西来影响此映射。 (这些特定于供应商的文件负责说明,例如, superusers是将被分配admins的应用程序angular色的组。

我想重用这些文件提供的function,我想这样做尽可能广泛的应用程序服务器的数组。

这是完全任意的,IBM正在处理这个问题,这似乎证实了我怀疑我想要做的事实际上是不可能的 。 (对于我的情况来说,更多的弹药是这个特定的Java EE合同不值得它所印刷的文章。)

我的问题:我如何从PolicyConfiguration GlassFish和JBoss中的principal-to-role-mapping信息? 如果有一个标准的方法来做到这一点,我不知道,我都耳朵。

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

尽pipeGlassfish和JBoss支持主体到angular色的映射,但JACC并不假定所有的容器都这么做,因此它委派了将这些映射保留到JACC提供者实现的职责。 从文档(请参阅: PolicyConfiguration.addToRole方法 ):

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

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