【发布时间】:2015-06-14 00:25:00
【问题描述】:
不幸的是,在 Java EE 中,一些服务器需要供应商特定的组来进行安全配置的角色映射。对于这些服务器,即使确实没有要映射的内容,这种映射也是强制性的。
不幸的是,IBM Liberty 就是这样的服务器。它需要一个名为ibm-application-bnd.xml 的文件中的映射,该映射应该放在EAR 的META-INF/ 文件夹中。例如:
<?xml version="1.0" encoding="UTF-8"?>
<application-bnd xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-application-bnd_1_2.xsd"
xmlns="http://websphere.ibm.com/xml/ns/javaee"
version="1.2">
<security-role name="architect">
<group name="architect" />
</security-role>
</application-bnd>
更不幸的是,这个文件似乎只能从 EAR 中使用。
在将 WAR 与 Liberty 结合使用时,如何从应用程序归档中指定组到角色的映射?
(很遗憾,需要我更改服务器内部的任何内容或与任何类型的控制台或图形管理界面交互的解决方案对我来说不可用)
【问题讨论】:
-
您已经回答了您的问题。有两种方法,一种是通过EAR 中的bnd 文件,第二种是通过server.xml 中的映射。为什么您不能使用其中之一?如果您可以控制应用程序,那么您可以使用绑定文件,如果您可以控制服务器 - 您可以使用服务器方式。看起来您希望完全控制应用程序内部的映射,并且根本不使用任何用户注册表。您要解决的真正问题是什么?
-
@Gas “有什么理由不能使用其中之一吗?” - 我想回复这个问题;为什么在使用 EAR 时可以在存档中定义映射,但是在使用 WAR 时,这(似乎)是不可能的?
-
@Gas “你想要解决的真正问题是什么?” - 在商业案例的意义上,我没有“真正的问题”。我正在测试 JASPIC 实现是否符合规范。见github.com/javaee-samples/javaee7-samples/tree/master/jaspic
-
@Gas “有什么理由不能使用其中之一吗?” - JASPIC 测试在一系列服务器上运行测试。为每个执行的集成测试修改已安装的服务器很麻烦,统治我们的
server.xml。使用 EAR 也很麻烦,因为所有其他服务器的所有测试都是基于 WAR 的。将要测试的 WAR 包装在 EAR 中仅用于 Liberty 测试并不是很好,问题是为什么需要这样做?所有服务器要么不要求组到角色的映射,要么允许在战争中使用映射文件。为什么 Liberty 在这里与众不同? -
我认为你提出了很好的观点,所以我提出了两个改进请求。我不能保证我们何时或是否会交付它们,但您可以登录并订阅。 ibm.com/developerworks/rfe/…ibm.com/developerworks/rfe/…
标签: java websphere websphere-8 websphere-liberty