第六讲 J2EE安全机制

上传人:猪** 文档编号:243367560 上传时间:2024-09-21 格式:PPT 页数:49 大小:542.50KB
返回 下载 相关 举报
第六讲 J2EE安全机制_第1页
第1页 / 共49页
第六讲 J2EE安全机制_第2页
第2页 / 共49页
第六讲 J2EE安全机制_第3页
第3页 / 共49页
点击查看更多>>
资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,*,第六讲,J2EE,安全机制,本讲内容,Java,安全模型,基本,Java,安全体系结构,扩展,Java,安全体系结构,J2EE,安全策略,2,概述,自从,Java,设计之初,安全便成为,Java,编程语言,、,运行系统,、,API,与,工具集,的主要考虑。,JDK 1.0,开始引入了“,砂箱,”(,Sandbox,)方法,用于保护,移动代码,。,JDK 1.1,开始提供对,签名,Applet,、消息摘要、数字签名和数字证书的支持。,JDK 1.2(,即,Java 2),增加了,可配置,安全策略、证书管理等功能。,3,概述,(,续,),Java 2,的几种面向安全的扩展内容,JCE(Java,Cryptography Extension,,,Java,加密扩展,),,提供了加密、密钥生成、密钥协议与验证算法等功能。,JSSE(Java,Secure Socket Extension,,,Java,安全套接字扩展,),用于增加对基于,SSL,的,HTTP,协议的支持。,JAAS(Java,Authentication and Authorization Service,,,Java,验证与授权服务,),主要用于控制哪些用户能够运行哪些特定的操作。,Java 2 Security,包、,JCE,、,JSSE,和,JAAS,一起提供了开发安全的、基于,Web,的、分布式应用程序的综合框架,。,4,Java,安全模型,砂箱,权限,规定了代码允许执行的具体操作,主要通过,权限类型,、,权限名,和,操作类型,决定。,代码源,指定类所在的,URL,地址,,包括代码基和签名者。,保护域,将代码源和权限组合使用。,策略文件,包括一个或多个,保护域,定义的文本文件,完成权限所指定的任务,是将砂箱的其他各个要素结合起来。,密钥库,即保存,证书,的位置。,安全模型的关键概念,允许通过改变砂箱的参数来实现对程序运行权限的控制。,5,Java,安全模型,(,续,),JDK1.0,安全模型,安全控制是通过,砂箱,控制实现的,所有,远程,下载的代码都在砂箱中运行。,远程,Java,代码,本地,Java,代码,砂箱,操作系统资源,Java,虚拟机,6,Java,安全模型,(,续,),JDK1.1,安全模型,JDK 1.0,安全模型中所有的远程代码都无法直接访问本地操作系统资源,这使得,基于,Web,的应用程序,难以,下载执行,。,JDK 1.1,中引入了,信任安全模型,,可以指定哪些提供签名的,代码,能够访问,本地系统资源,。,7,Java,安全模型,(,续,),JDK1.1,安全模型,(,续,),非信任远程,Java,代码,本地,Java,代码,砂箱,操作系统资源,Java,虚拟机,信任远程,Java,代码,8,Java,安全模型,(,续,),JDK1.2,安全模型,JDK 1.2,版本以后,,可配置,的安全策略模型,无论是本地代码或者是下载到本地的远程代码,都遵循一个可配置的安全策略。,远程,Java,代码,本地,Java,代码,砂箱,操作系统资源,Java,虚拟机,可配置安全,策略,9,基本,Java 2,安全体系结构,基本,Java,安全体系结构图,理论上,存取控制器,可完全取代,安全管理器,了,但为了保证,JDK 1.2,以前程序不至于全部失效,而是对安全管理器作了必要的,补充,。,各类,Java,应用,操作系统、程序专用资源,类装载器,JRE,Java,平台类,字节码验证器,安全管理器,存取控制器,权限、,策略、,保护域,Java 2,平台,10,基本,Java 2,安全体系结构,(,续,),Java,语言安全性强制规则,必须严格遵守,实体访问级别,的操作要求,(Private,,,Protected,,,Public),。,程序不能访问任意的内存地址,(,final,),。,变量在,初始化,之前不能使用,(,本地变量,实例变量,),。,对于所有的数组访问都必须进行,越界检查,(,安全漏洞,),。,对象不能任意,强制转换,为其他类型对象,(,除超类或子类类型,),。,具体实施表现在,Java,程序,编译,、将类装,载入,虚拟机以及,运行,阶段。,11,基本,Java 2,安全体系结构,(,续,),字节码验证器,属于,Java,虚拟机,的一部分,没有任何接口,程序员无法直接访问,用户也不能与之进行交互。,证明从,Java 2,平台之外装载的,Java,应用程序字节码满足:,类文件格式的正确性。,不会基于,final,类派生出子类,不会覆盖,final,方法。,每个类,(,除了,Object,类以外,),都有一个超类。,不存在类型之间的非法转换。,操作数栈不存在溢出。,但数组越界检查和对象类型转换检查需在,运行,时进行。,12,基本,Java 2,安全体系结构,(,续,),类装载器,是,Java,虚拟机,的关键组件之一,主要负责将,Java,类字节码读入,Java,虚拟机,并转换成类定义的形式。,可以结合虚拟机定义,命名空间,,保护,Java,语言本身的安全特性。,在必要的时候将调用,安全管理器,,从而保证代码在定义或访问相关类时具有适当的权限。,建立了,权限,与,类对象,之间的,映射,,这样存取控制器就可以知道哪些类拥有哪些权限了。,13,基本,Java 2,安全体系结构,(,续,),安全管理器,从,Java API,的角度来看,应用的安全策略是由,安全管理器,负责的,通过安全管理器才能确定与安全相关的某项操作是否能够执行。,Java.lang.,SecurityManager,类,为其他,Java API,提供了相应的接口,其,checkPermission,方法,又会调用,java.security.AccessController,类,,用来存取控制器中的内容,检查某项操作是否可以执行。,14,基本,Java 2,安全体系结构,(,续,),存取控制器,可为用户主机上的大部分关键资源提供保护,而且允许用户为具体的应用指定,安全策略,,只需要修改,java.policy,等类似的策略文件中的授权项即可。,通过创建,权限类,使得存取控制器可以利用权限类对象,按具体要求决定是否可以访问某个资源,(,扩展,),。,权限,、,策略,是建立存取控制器的基础。,15,扩展,Java 2,安全体系结构,扩展,Java 2,安全体系结构图,基于,基本,Java 2,安全体系结构,和,JCA,。,Java,加密扩展,(JCE),Java,安全套接字,扩展,(JSSE),Java,验证与授权,服务,(JAAS),基本,Java2,安全,体系结构,Java,加密体系,结构,(JCA),Java 2,平台,Java,加密扩展,(JCE),Java,安全套接字,扩展,(JSSE),Java,验证与授权,服务,(JAAS),基本,Java2,安全,体系结构,Java,加密体系,结构,(JCA),Java 2,平台,16,扩展,Java 2,安全体系结构,(,续,),扩展,Java 2,安全体系结构中的组件:,字节码验证器,类装载器,安全管理器,存取控制器,JCE,JSSE,JAAS,17,扩展,Java 2,安全体系结构,(,续,),JCA(Java,Cryptography Architecture,,,Java,加密体系结构,),JCA,提供了,Java,平台实现基本,加密,功能的工具,包括,JDK 1.2,安全,API,中与密码有关的部分,以及一组相关约定和规范。,18,扩展,Java 2,安全体系结构,(,续,),Java,密码扩展,(JCE),虽然,JCA,也是,java.security,包的一部分,但是其基础服务提供者和其他,Java,核心安全类完全不同。,Java,密码扩展,(JCE),是对,JCA API,的,扩展,,包括用于加密、密钥交换和信息认证码,(MAC),的,API,,支持对称加密、非对称加密、流式密码处理等,同时还支持序列化加密对象。,JCE,和,JDK,密码共同提供了一个与,平台无关,的完整密码,API,。,19,Java,安全套接字扩展,(JSSE),是,Java,基本安全平台的,扩充,,提供了,SSL,和,TLS,协议的,Java,实现,并提供了数据加密、服务器验证、消息完整性、客户端认证等功能,增强了网络通信的安全性。,利用,JSSE,,开发者可以在服务器和客户端之间建立,安全,的数据通信,而不用考虑采用哪种通信协议,(HTTPS,、,Telnet,、,FTP),。,扩展,Java 2,安全体系结构,(,续,),20,扩展,Java 2,安全体系结构,(,续,),Java,安全套接字扩展,(,续,),通过抽象复杂的,安全算法,和“握手”机制,,JSSE,使得遭受危险性攻击的可能性降到了最低。,JSSE,采用,构件,的形式可以直接,集成,到应用程序中,使得应用程序的开发变得非常简单。,21,扩展,Java 2,安全体系结构,(,续,),Java,验证与授权服务,(JAAS),提供了一个框架,开发人员可以根据此框架要求执行相关代码的,用户,必须拥有相应的,权限,。,首先,,JAAS,提供了一组用于实现,用户鉴别,的类,(,要求用户登录,),。此外,,JAAS,还提供了另一组类,其作用是,授权,用户执行某些特定的操作。,22,扩展,Java 2,安全体系结构,(,续,),Java,验证与授权服务,(,续,),JAAS,提供了针对,代码的运行,进行控制这一机制,增强了,Java,的安全性,而传统,Java,代码的安全只是基于代码源以及代码签名者。,JAAS,还采用“,可插拔,”的运行方式,因此,在升级或新增验证技术时,并不需要对应用程序作任何修改。,23,J2EE,安全概述,J2EE,安全模型,能够配置,Web,组件,或,企业,Bean,,以保证系统资源只能被,授权的用户,所访问,这样每一客户属于一个特别的,角色,,而每个角色只允许激活特定的,方法,。,24,J2EE,安全概述,(,续,),JAVA,安全认证框架(,JAF,),提供一些安全控制方面的框架,让开发者通过各种,部署,和,自定义,实现自己的,个性,安全控制策略。,25,J2EE,安全概述,(,续,),J2EE,应用程序设计模型使开发人员不需要了解应用程序,安全性机制,特有的,实现细节,,,J2EE,平台在某种程度上具备这种,隔离性,,从而增强了应用程序的,可移植性,,允许在不同的安全环境中部署应用程序。,26,J2EE,安全概述,(,续,),J2EE,安全体系的目的是在实现,各层安全,的基础上实现各层相关联的应用程序,整体安全,。,27,安全方法,J2EE,和,Web,服务应用程序由可在不同容器中部署的组件构成,,组件的安全性,由它们的,容器,提供:,声明性安全,程序性安全,28,声明性安全,声明性安全表示应用程序的,安全结构,,包括安全角色、访问控制和身份验证要求等,且在应用程序的,外部,(,在,部署描述符,中,),。,在应用程序的,安全上下文,中,应用程序提供者要提供能完全满足应用程序,配置要求,的,声明机制,。,应用程序部署者使用各种,J2EE,服务器的不同工具将,部署描述符,描述的应用程序,安全需求,映射到,J2EE,容器,实现的,安全机制,。,29,程序性安全,程序性安全是指用安全敏感的程序来实现安全控制,它,隐藏,在,应用程序,中,用来做,安全判决,。,当单独的,声明性安全,不足以表示应用程序的安全模型时,,程序性安全,就很有用。,30,受保护资源,受保护资源只有授权用户可以访问,,授权,基于,识别,和,身份验证,,提供对受保护资源的,控制访问,。,识别是能够“,认出,”系统实体的过程。,身份验证是,校验,计算机系统中的用户、设备或者其他实体身份的过程,通常作为允许访问系统资源的,必要条件,。,31,不受保护资源,访问不受保护资源的实体不需要授权。,访问不受保护资源的实体也不需要身份验证。,访问系统资源而未经授权的行为被称作,未授权访问,或者,匿名访问,。,32,用户、组、域和角色,J2EE,用户指,个体,(,或者,应用程序,),身份,可将用户和组联系在一起。,J2EE,组是根据,共有特性,分类的、经过,认证,的用户类别,将,用户,分类到,用户组,使控制大量用户的访问权变得更简单。,域是指由,相同身份验证策略,管理的一批用户和组,亦即被相同的安全验证规则所约束的,用户集合,。,角色指由应用程序组装者定义的访问具体资源组的,权限,的一个抽象的名字,即,抽象的逻辑用户分组,。,33,用户、组、域和角色,(,续,),一个,J2EE,组也代表一个,用户分类,,但是和角色有,不同的范围,。,J2EE,组,被指定到,整个,J2EE,服务器,,而,角色,只覆盖一个,特定的应用程序,。,34,用户、组、域和角色,(,续,),在开发,J2EE,应用程序时,,不需要知道,已经为应用程序将要在其中运行的,域,定义的,用户类型,。,在,J2EE,平台中,安全体系结构提供了一种机制,,自动,将应用程序中定义的,角色,映射到运行时,域,中定义的,用户,或,组,。,35,用户、组、域和角色,(,续,),在部署应用程序时,部署者将,角色,映射到运行环境中的,安全实体,。,一个有,特定角色,的用户就有了,相应,的,J2EE,应用程序,访问权,。,创建用户,和,/,或组,在应用程序中定义角色,映射角色到,用户或组,用户,1,用户,2,用户,3,组,1,用户,a,用户,b,用户,c,应用程序,角色,1,角色,2,角色,1,角色,2,用户,1,用户,2,用户,3,组,1,创建用户,和,/,或组,在应用程序中定义角色,映射角色到,用户或组,用户,1,用户,2,用户,3,组,1,用户,a,用户,b,用户,c,应用程序,角色,1,角色,2,角色,1,角色,2,用户,1,用户,2,用户,3,组,1,创建用户,和,/,或组,在应用程序中定义角色,映射角色到,用户或组,用户,1,用户,2,用户,3,组,1,用户,a,用户,b,用户,c,应用程序,角色,1,角色,2,角色,1,角色,2,用户,1,用户,2,用户,3,组,1,36,Web,层安全,Web,容器,激活为受保护的,Web,资源,配置的身份验证机制:,HTTP,基本验证,(,用户名和密码,),。,基于,FORM,的验证,(,自定义登录页面和错误提示页,),。,客户端证书验证。,相互身份验证。,摘要身份验证,(,通过加密形式传送密码,),。,37,Web,层安全,(,续,),HTTP,基本身份验证,将,用户名,和,密码,作为,uu,编码,,并不特别安全。,客户端,服务器,1.,请求受保护的资源,2.,请求用户名:密码,3.,发送用户名:密码,4.,返回被请求的资源,客户端,服务器,1.,请求受保护的资源,2.,请求用户名:密码,3.,发送用户名:密码,4.,返回被请求的资源,38,Web,层安全,(,续,),基于表单的身份验证,用户对话框的内容作为,纯文本,发送,也不特别安全。,服务器,客户端,j_security_check,?,login.jsp,error.jsp,1.,请求受保护的资源,3.,来自提交,4.,改向到资源,2.,改向到登录页面,返回的错误页面,失败,成功,39,Web,层安全,(,续,),基于证书的相互身份验证,客户端,服务器,信任库,server.keystore,server.cert,server.cert,4.,发送用户名:密码,5.,访问受保护的资源,3.,验证证书,1.,请求受保护的资源,2.,出示证书,40,Web,层安全,(,续,),基于用户名和密码的相互身份验证,server.keystore,客户端,服务器,信任库,server.cert,server.cert,4.,出示证书,6.,访问受保护的资源,3.,验证证书,1.,请求受保护的资源,2.,出示证书,client.keystore,client.cert,client.cert,5.,验证证书,41,Web,层安全,(,续,),Web,层程序性安全由,HttpServletRequest,接口,的下述方法组成:,getRemoteUser,isUserInRole,getUserPrincipal,42,EJB,层安全,声明,方法权限,(,表明哪些,角色,被准许调用哪些,方法,),。,映射,角色,到,J2EE,用户,和,组,。,43,EJB,层安全,(,续,),EJB,层,受保护资源,包括被应用程序客户端调用的,企业,Bean,方法,、,Web,组件,或者其他企业,Bean,。,EJB,层程序性安全的组成方法:,getCallerPrincipal,(,确定企业,Bean,的,调用者,),isCallerInRole,(,确定调用者是否具有指定的,角色,),44,应用程序客户端层安全,Java,验证和授权服务(,Java Authentication and Authorization Service,,,JAAS,)机制,扩展,了,Java2,平台的安全架构,提供了一种,基于用户,的授权方式,是标准嵌入式验证模块,(,PAM,),框架的,Java,版,实现。,45,应用程序客户端层安全,(,续,),可以将,JAAS,用于,身份验证,,,JAAS,允许应用程序保持,独立,的基本身份验证技术,让,J2EE,应用程序去,验证,并,授权,某个特定用户或用户组来执行它。,可以在应用程序内插入,新的,或者,改进的,身份验证技术,而,不用修改,应用程序本身。,使应用程序,独立于,底层的安全技术实现。,46,EIS,层安全,EIS,可能需要请求者的,签名,以访问资源,在,容器管理,的签名方法中,应用程序组件让容器负责配置和管理,EIS,签名,容器确定与,EIS,实例建立连接的用户名和密码,安全信息由容器提供。,在,组件管理,的签名方法中,应用程序组件代码通过包含实现签名过程的代码管理,EIS,签名。,47,可传递的安全身份,传播安全身份的方式,将,中间组件,的调用者安全身份传递给,目的企业,bean,(被调用者),当目的容器,信任,中间组件时。,将,特定,的安全身份传递给,目的企业,bean,,当目的容器期望通过,特定,的安全身份访问时。,目的容器,无法验证,传播的安全标识,但,必须信任,调用容器传播,验证过,的安全标识。,48,可传递的安全身份,(,续,),安全标识的传播,启动客户端,中间组件,目标,应用程序客户端,或,Web,客户端,EJB,或,Web,容器,EJB,容器,J2EE,安全标识,被传播的安全,标识,(J2EE),49,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!