快速业务通道

安全注释和授权在GlassFish和Java EE 5 SDK中的应用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

安全注释和授权在GlassFish和Java EE 5 SDK中的应用

时间:2011-07-22

安全性对于企业环境非常重要。在 Java EE 5 / GlassFish 环境中,您可以通过以下几种方式实现安全性:

传输层安全性 (TLS) / 安全套接字层 (SSL) 技术

身份验证 (Authentication) 和授权 (Authorization)

消息层安全性(仅适用于 GlassFish 中的 Web 服务)

本文讨论身份验证和授权。参考资料 [1]、[2] 和 [3] 讨论了如何在客户端和服务器端为 Enterprise JavaBeans 和 Web 服务建立 SSL 环境。Web 服务的消息层安全性将在以后的文章中讨论。

身份验证服务一般通过要求用户输入用户名和密码来实现校验用户身份的目的。在 Java EE 环境中,身份验证是和域(realm)相关联的。域可以通过多种方式存储用户身份信息,包括文件、LDAP 目录、甚至是通过 JDBC 访问的数据库(请参阅 参考资料 [4])。它还可以与 Solaris 可拔插验证模块 (Pluggable Authentication Modules, PAM) 框架一起工作。

授权服务根据所运行的软件和运行该软件的用户的身份来执行访问控制授权操作。每次当用户登录时,应用程序都会为他/她赋予一组权限。

在 Java EE 5 之前,如果您希望在某个应用程序使用授权,则需要在应用程序部署描述符 ejb-jar.xml 或 web.xml 中指定授权信息。Java EE 5 的重要改进之一就是简化了 Java EE 应用程序的开发。从 Java EE 5 开始,开发人员可以在 Java 源文件中指定注释,而无需在部署描述符中加入元数据。注释简化了 Java EE 应用程序的开发,缩短了开发周期,并降低了总体拥有成本。

JSR 250(请参阅 参考资料 [5])定义了 Java 平台中的常用注释。本文将讨论 JSR 250 中定义的安全注释,并演示如何在应用程序中通过它们来实现身份验证和授权,以获得安全性。

基本定义和示例

注释 (Annotation) 是一种特殊的修饰符,可以与其他修饰符共同使用。注释由 @ 符号、注释类型和包含在括号中的元素值对列表组成。

本节讨论 JSR 250 定义的常用安全注释。共有 5 种(请参阅 参考资料 [6]):

javax.annotation.security.PermitAll

javax.annotation.security.DenyAll

javax.annotation.security.RolesAllowed

javax.annotation.security.DeclareRoles

javax.annotation.security.RunAs

@PermitAll、@DenyAll 和 @RolesAllowed 注释是为指定 EJB 业务方法权限而定义的。@DeclareRoles 和 @RunAs 是 TYPE 级注释,用于指定与角色相关的元数据。

对于 Web 模块,您仍然需要在 web.xml 应用程序部署描述符中定义一个 <security-constraint> 来添加授权约束,这与 J2EE 1.4 相类似。在 Java EE 5 环境中,与权限相关的注释仅为 EJB 模块定义。下表总结了这些注释的基本用法。有关详细信息,请参阅 JSR 250 规范(参考资料 [5])。

注释 目标 EJB 或其超类 Servlet 或 Web 库 描述
类型 方法
@PermitAll X X X 指示某 EJB 的某个方法或所有业务方法允许被所有用户访问。
@DenyAll X X 指示 EJB 的某个方法不允许被任何用户访问。
@RolesAllowed X X X 指示 EJB 的某个方法或所有业务方法允许被角色列表中的用户访问。
@DeclareRoles X X X 定义安全检查的角色,供 EJBContext.isCallerInRole、HttpServletRequest.isUserInRole 和 WebServiceContext.isUserInRole 使用。
@RunAs X X(不适用于非 EJB 超类) X(仅适用于 Servlet) 指定某个组件的 run-as 角色。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号