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

安全性对于企业环境非常重要。在 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 角色。
时间: 2024-08-31 06:04:58

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

Java EE 5技术简介

NetBeans IDE 6.0 的开发是在 Java EE 和 Glassfish 工作组的密切合作下完成的,它实现了与新的 Java EE 5 规范的完美集成,从而可以在此 IDE 中轻松地使用新规范.NetBeans IDE 6.0 是您快速学习 Java EE 5 编程并使用它高效工作的最佳途径. 本文档介绍了 Java EE 5 规范的一些重要概念,以及它们如何与您目前的编程项目相关联的.本文将 介绍以下主题: 标注取代部署描述符 简化的 EJB 软件开发 使用依赖关系注入来访问资源

将Flex集成到Java EE应用程序的最佳实践

简介:传统的 Java EE 应用程序通常使用某种 MVC 框架(例如,Struts)作为前端用户界面,随着 Flex 的兴起,基于 RIA 的客户端能够给用户带来更酷的界面,更短的响应时间,以及更接近于桌面应 用程序的体验.本文将讲述如何将 Flex 集成至一个现有的 Java EE 应用程序中,以及如何应用最佳实 践高效率地并行开发 Java EE 和 Flex. 开发环境 本文的开发环境为 Windows 7 Ultimate,Eclipse 3.4,Flex Builder 3.Java

在Solaris操作系统上搭建Java EE开发环境

一. 下载JDK JDK 是 Java Development Kit 的缩写,他是整个 Java 的核心,包括了 Java 运行环境( Java Runtime Envirnment ),一些 Java 工具和 Java 基础的类库 (rt.jar) .不论什么 Java 应用服务器实质都是内置了某个版本的 JDK .因此掌握 JDK 是学好 Java 的第一步. Java 开发工具包是免费下载使用的.若需要可以根据不同的操作系统平台,下载相应的 JDK 进行安装,也可以通过我这文章中所提供的

《Java EE 7精粹》—— 导读

前言 Java EE 7平台建立在以前的版本之上,侧重于提高生产力和拥抱HTML5.本书面向的是想快速概览这个平台和回来复习基础知识的读者. 本书提供了Java EE 7平台中关键规范的概述(每章一个规范).本书绝不是一本介绍不同规范中每一个概念的详尽指南或教程,而是通过简单的代码示例来解释不同规范的主要概念.阅读本书,无需具备Java EE平台早期版本的知识,但你需要对Java有一些基本了解,以便理解代码. 这本书的重要部分来自<Java EE 6 Pocket Guide>(O'Reill

怎样练就Java EE 高手,为后人指路

问题描述 大家好!工作一年了,自己的技术也有了一定程度的提高!但是现在感觉自己进步的太慢!似乎在Java EE 的大河中失去了方向!不知道自己应该从何学起!本人对技术特别的向往!每天都能接触到一些新的东西!但是感觉东西大多了!我现在在大连工作,在大连这个地方主要是做对日外包的,技术要求不是很高,牛人太少!所以想各位指点一下,给小弟一个方向,现在自己很怕走弯路!现在公司里我算是高手了,但是自己明白要学的东西还很多!希望各位吧自己的学习经历拿出来分享!指导一下后人. 解决方案 学JavaEE请不要做

Java EE应用程序在Glassfish上的性能调优案例分析

Java EE应用的性能问题对严肃的项目和产品来说是一个非常重要的问题.特别是企业级的应用,并发用户多,数据传输量大,业务逻辑复杂,占用系统资源多,因此性能问题在企业级应用变得至关重要,它和系统的稳定性有着直接的联系.更加重要的是,性能好的应用在完成相同任务的条件下,能够占用更少的资源,获得更好的用户体验,换句话说,就是能够节省费用和消耗,获得更高的利润. 要获得更好的性能,就需要对原来的系统进行性能调优.对运行在Glassfish上的JavaEE应用,调优是一件相对复杂的事情.在调优以前必须要

在GlassFish v3中整合Rails和java EE

Rails和java EE的整合 下文将介绍一下在GlassFish v3上的Rails和java EE的整合.GlassFish v3是GlassFish V2的下一个版本,其关注的重点是模块化和使得运行非Java EE的容器和模块成为可能. 下面是详细的细节说明: 1. 使用JRuby 1.1(安装Rails),按照如下步骤创建一个Rails应用"railsee3": ~/testbed/jruby-1.1/samples/rails >../../bin/jruby -S

01_Weblogic课程之概念篇:代理服务器,web服务器,应用程序服务器,JNDI概念,JTA概念,Java消息服务,Java验证和授权(JAAS),Java管理扩展,Web客户机,客户机应用程序

 1 什么是服务器 Weblogic中服务器分为两种,一种是受管服务器,另外一种是管理服务器.   Weblogic课程(Weblogic是Oracle公司的,最开始的是BEA公司的) 一 系统管理 二 开发 三 性能调优   WLS(Weblogic Server)   Weblogic 12c新特性是加入了云支持   2 集群的好处:失败迁移和负载均衡. 3 分布式系统 分布式系统将工作划分到几个独立的模块中. 单个模块出现故障对整个系统的影响较小,这使得分布式系统具有更高的: ----

Java 批量删除html中注释内容的方法_java

其实删除html文本中的注释有很多方法,这里就自己随便写了一个处理方法,权当笔记,有需要的同学可以参考. html文本的注释有几个特点: 1. 成对出现,有开始就一定有结束. 2. 注释标签没有嵌套,注释开始标签(以下称为 <!--)下一个一定是其对应的结束标签(以下称为 -->). 3. 一行中可能有多个注释标签对儿. 4. 注释也可以换行. 大致有以下几种情况: 复制代码 代码如下: <html>  <!--This is a head-->  <head&g