【发布时间】:2011-12-03 13:03:35
【问题描述】:
我正在完成一个 Java EE 6 应用程序。该应用程序是使用 GlassFish 开发的,但我想让它可以跨不同的应用程序服务器移植。
已通过在应用程序的 DataSource 中定义用户和组以及使用 GlassFish 的 jdbcRealm 来实现安全性。我知道其他 App Server 中也存在类似的实现(虽然我还没有查看详细信息)。
为了使我的应用程序可移植,我需要了解安全角色和主体/用户之间的映射是否可以在应用程序服务器本身或应用程序源代码中定义,而无需使用特定于应用服务器的部署描述符 glassfish-web.xml 或等效项。这将避免部署人员编辑.war 文件的任务,这是我想要的,因为应用程序必须是可移植的。
由于我已将角色映射到具有相同名称的应用程序定义的组,因此我要删除的代码是
<security-role-mapping>
<role-name>RoleGroup1</role-name>
<group-name>RoleGroup1</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>RoleGroup2</role-name>
<group-name>RoleGroup2</group-name>
</security-role-mapping>
【问题讨论】:
-
Glassfish 提供了一个名为“默认主体到角色映射”的设置,如果您保持组和角色相同,它会自动生成这些映射。您可以通过勾选 Configurations > server-config > Security 下的复选框来启用它。我预计其他应用服务器也有类似的特性。由于您需要提供说明来为您部署到的每个应用程序服务器(至少)配置 Realm,因此您可以将此说明添加到这些说明的末尾,而无需填充特定于容器的映射文件。跨度>
标签: java security jakarta-ee deployment portability