安全注释和授权在GlassFish和Java EE 5 SDK中的应用 - 编程入门网
安全注释和授权在GlassFish和Java EE 5 SDK中的应用(2)时间:2011-07-22注意: 对于 @PermitAll、@DenyAll 和 @RolesAllowed 注释,类级别的注释适用于类,方法级的注释适用于方法。方法级注释覆盖类级注释行为。 示例:请参考以下代码:
在该示例中,hello() 方法允许被所有用户访问,bye() 方法允许被 javaee 角色中的用户访问。 @DeclareRoles 注释定义了某个组件将要使用的角色列表。在 Java EE 5 环境中,您可以通过 @javax.annotation.Resource 来查找资源,以及通过调用以下 API 来确认用户是否属于某个角色:
尽管 @PermitAll、@DenyAll 和 @RolesAllowed 注释允许实现大部分的授权决策,但仍需要 @DeclareRoles 注释来帮助实现更为复杂的逻辑。 例如,假设 hello 方法允许被属于角色 A 但同时不属于角色 B 的用户访问,则以下代码片段可以实现此目的:
在 Web 模块中,您可以在 Servlet、过滤器和标记库中指定 @DeclareRoles。JSP 页面不支持注释。 嵌入式 Web 服务调用中的 run-as 或调用者的身份标识和客户身份标识之间的关系是没有定义的。无定义则意味着您不能假定 Web 服务调用中的 run-as 和调用者身份标识作为客户标识传递。 安全注释和授权在GlassFish和Java EE 5 SDK中的应用(3)时间:2011-07-22注释的无效用法示例 同一方法中不能同时使用 @DenyAll、@PermitAll 和 @RolesAllowed。例如,以下这些用法是无效的:
有关详细信息,请参阅 JSR 250 规范的 2.11 节。 同一方法中不能使用 @RolesAllowed 注释两次以上。 例如,以下用法无效并且会导致编译失败:
可以在 @RolesAllowed 注释中提供授权角色列表以实现想要的效果,如下所示:
安全注释的继承 本节讨论安全注释的继承。因为 GlassFish 方法的默认行为是 @PermitAll,因此为便于阅读,以下讨论将省略该注释。 继承的一般规则如下: 对于方法,使用与继承层次结构中选择的方法有关联的注释。 对于 @RunAs 注释,只考虑层次结构叶节点中的注释。 对于 @DeclareRoles 注释,继承附加在继承层次结构中。 下 |
||||||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |