可以通过指定安全角色给企业 Bean 方法对其进行保护。在指定安全角色之前,您需要了解哪些 Enterprise JavaBeans (EJB) 方法需要保护以及如何对其进行保护。
关于此任务
可以对一组角色指定一组 EJB 方法。通过关联一组角色保护 EJB 方法时,请至少为该组中的一个角色授权,这样您就可以访问该方法了。要使一组 EJB 方法不可访问,请将它们标记为已排除。通过清除一组企业 Bean 方法,那么可以使每个人都能访问这些方法。在调用其他企业 Bean 前,可以采用另一个标识(使用 runAs 标识)来运行企业 Bean。
注: 此过程可能与使用组装工具时所需要执行的步骤不匹配,或与您正在使用的组装工具的版本不匹配。应该遵循要使用的工具和版本的指示信息。有关使用组装工具的更多信息,请参阅组装工具信息中心。
要保护企业 Bean 应用程序,请执行以下步骤:
过程
- 在组装工具中,导入包含一个或多个 Web 模块的 Enterprise JavaBeans (EJB) Java™ 归档 (JAR) 文件或应用程序归档 (EAR) 文件。
请参阅 Rational Application Developer 文档,以了解有关导入 EJB JAR 文件或导入企业应用程序 EAR 文件的信息。
- 在项目资源管理器中,单击 EJB 项目目录,然后单击您的应用程序名。
- 右键单击部署描述符,然后单击打开方式 > 部署描述符编辑器。 如果您选择了企业 Bean .jar 文件,那么打开 EJB 部署描述符编辑器。如果您选择应用程序 .ear 文件,那么打开应用程序部署描述符编辑器。要查看有关编辑器的联机信息,请按 F1,然后单击编辑器名。
- 创建安全角色。 可在应用程序级别或 EJB 模块级别上创建安全角色。如果您在 EJB 模块级别上创建安全角色,那么角色显示在应用程序级别中。如果在应用程序级别上创建安全角色,那么该角色并不会在所有
EJB 模块中出现。可复制和粘贴在应用程序级别上创建的一个或多个 EJB 模块安全角色:
- 在 EJB 模块级别创建角色。在 EJB 部署描述符编辑器中,单击组装选项卡。在“安全角色”下,单击添加。在“添加安全角色”向导中,命名并描述安全角色,然后单击完成。
- 在应用程序级别创建角色。在应用程序部署描述符编辑器中,选择安全性选项卡。在安全角色列表下,单击添加。在“添加安全角色”向导中,命名和描述安全角色;然后单击完成。
- 创建方法许可权。 方法许可权将一个或多种方法映射到一组角色。企业 Bean 有四种类型的方法:Home 方法、远程方法、LocalHome 方法和本地方法。可以在方法级别上添加许可权到企业 Bean。除非您已定义了一个或多个安全角色,否则不能将方法许可权添加到企业 Bean。对于 V2.0 EJB 项目,未选取的选项指定来自所选 bean 的所选方法不需要授权也能运行。要将方法许可权添加到企业 Bean:
- 在方法许可权下的 EJB 部署描述符编辑器的组装选项卡上,单击添加。“添加方法许可权”向导打开。
- 从找到的角色列表选择安全角色并单击下一步。
- 从找到的 bean 列表选择一个或多个企业 Bean。可以单击全选或全部不选以选择或者清除列表中的所有企业 Bean。单击下一步。
- 选择您要绑定到安全角色的方法。“方法元素”页面列出与企业 Bean 关联的所有方法。 可以单击全部应用或全部不选来快速选择或清除多种方法。该选择仅影响每个 bean 的缺省 (*) 方法,为精确方法特征符创建方法许可权覆盖缺省 (*) 方法许可权设置。缺省 (*) 方法表示 bean 中的所有方法。还存在每个接口的缺省 (*) 方法。通过不选择树中所有的单种方法,可以对剩余的方法设置其他许可权。
- 单击完成。
创建方法许可权后,可以在树中看到新的方法许可权。展开树以查看在方法许可权中定义的 bean 和方法。
- 拒绝用户访问方法。 用户无法访问排除的方法。部署者安装应用程序期间,清除企业 Bean 中任何未指定角色或未排除的方法。
- 在排除列表下的 EJB 部署描述符编辑器的组装选项卡上,单击添加。“排除列表”向导打开。
- 从找到的 bean 列表选择一个或多个企业 Bean 并单击下一步。
- 选择安全身份的一个或多种方法元素并单击完成。
- 将 security-role-ref 和 role-name 映射到 role-link。 当开发企业 Bean 时,可以创建 security-role-ref 元素。security-role-ref 元素仅包含 role-name 字段。role-name 字段确定调用者是否在指定的 role(isCallerInRole()) 中,并包含代码中引用的角色名。如果您在组装阶段期间创建安全角色,那么开发者在 role-name 字段中使用逻辑角色名,并在描述字段中提供足够信息,用于组装器映射实际角色 (role-link)。security-role-ref 元素位于 EJB 级别。企业 Bean 可具有零个或更多 security-role-ref 元素。
- 在引用列表下的 EJB 部署描述符编辑器的引用选项卡上,单击添加。“添加引用”向导打开。
- 选择安全角色引用并单击下一步。
- 命名安全角色引用,选择要将引用链接到的安全角色,描述安全角色引用并单击完成。
- 使用上述步骤将开发期间使用的每个 role-name 映射到角色 (role-link)。
- 为企业 Bean 组件指定 RunAs 标识。 企业 Bean 的 RunAs 标识用于调用 EJB 调用链中的下一个企业 Bean。当调用下一个企业 Bean 时,RunAsIdentity 传递给下一个企业 Bean,用于在下一个企业 Bean 上执行授权检查。如果未指定 RunAs 标识,那么客户机标识传播给下一个企业 Bean。RunAs 标识可以表示每个企业 Bean,也可以表示企业 Bean 中的每种方法。
- 在安全身份(Bean 级别)字段旁边的 EJB 部署描述符编辑器的访问选项卡上,单击添加。“添加安全身份”向导打开。
- 选择相应的 run as 方式,描述安全身份,然后单击下一步。 选择使用调用者标识方式以指示安全服务对主体的凭证设置不作更改。 选择使用指定了特定角色的标识方式以使用指定了指定安全角色的主体来运行
Bean 方法。此关联是应用程序绑定的一部分,其中的角色与授权该角色的用户的用户标识和密码相关联。如果选择使用指定了特定角色的标识方式,那么必须指定角色名和角色描述。
- 从找到的 bean 列表选择一个或多个企业 Bean 并单击下一步。如果“下一步”不可用,请单击完成。
- 可选: 在“方法元素”页面上,选择安全身份的一个或多种方法元素并单击完成。
- 关闭部署部署描述符编辑器,并且,当提示时,单击是保存更改。
结果
保护 EJB 应用程序后,结果
.jar 文件在其部署描述符中包含安全性信息。EJB 模块的安全信息存储在
ejb-jar.xml 文件中。
下一步做什么
使用组装工具保护 EJB 应用程序后,可以使用管理控制台安装 EJB 应用程序。在受保护 EJB 应用程序安装期间,请遵循“部署受保护应用程序”主题中的步骤来完成保护 EJB 应用程序的任务。