基于J2EE平台的SSO的设计与实现

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:Andylinzc
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:分析传统的认证与授权解决方案的弊端,结合Web services的优点提出将认证与授权抽象出来作为一个单独的Web服务将安全性集中起来供所有应用程序共享的解决方案,并根据该解决方案的要求,实现了J2EE平台下基于JAAS,Web Service的SSO和统一认证授权。
  关键词:JAAS,Web Service,单点登录,统一认证授权
  中图分类号:TP311.1 文献标识码:A文章编号:1009-3044(2007)04-10892-02
  
  1 引言
  在今天竞争日愈激烈的商业环境中,越来越多的领先公司正在构建新的基于 Web 的基础架构,获取协作网络的战略优势。要简化协作,公司首先需要识别每一个网络用户以及授权每一个用户能够访问哪些资源。一些公司通过构建应用程序的安全性“前端”来应对这种挑战。这些前端是利用访问策略分别进行硬编码的;每一个前端都利用它自己的数据信息库跟踪合法用户的身份。不幸的是,随着企业在线流程数量和复杂度的增加,这种体系结构在当前的网络应用环境中的弊端是显而易见的:
  (1)消耗开发成本和延缓应用开发进度,即每个应用都要开发一套权限管理系统系统
  (2)用户管理、组织机构等数据重复维护,数据一致性、完整性得不到保证。
  (3)多个认证系统的出现使管理工作成本增加,并且越来越难以实施。用户需要登录系统的增多,受到非法截获和破坏的可能性也会增大,安全性因此相应降低。
  (4)无法统一认证和授权策略
  (5)无法统一分析用户应用行为
  (6)不能实现权限委托管理
  (7)实现单点登录难度大
  本文根据Web service和JAAS技术特点提出一种解决方案,将权限管理和认证授权抽象出来,集中在WEB的基础框架中,供所有的应用程序共享,对不同应用系统的集成提供单点登录,同时能够灵活配置多种认证方式来满足不通安全要求的需要。
  
  2 Web Services
  Web Services是当前IT技术一个热点,它的主要目标是在现有的各种异构平台的基础上构筑一个通用的平台无关、语言无关的技术层,各种不同平台之上的应用依靠这个技术层实施彼此的连接和集成。
  Web Service是指由企业发布的完成其特别商务需求的在线应用服务,能让任何用户、任何应用从任何地方都可能使用到它所提供的这些服务。通过数据传输以XML的格式,遵守SOAP协议发送和接受数据,Web Service最终实现异构平台上不同应用之间的相互通信和共享数据的[1]。
  基于Web Service 这些优点,如果在一个多应用环境下采用Web services的架构,将统一认证模块做成Web Service服务,供企业内的应用群或是企业间的应用群访问,从而解决企业应用中统一认证授权问题。
  
  3 Web应用环境下基于J2EE平台的SSO设计
  目前SSO的技术主要有三种[1]:基于Broker的SSO的方案,基于Agent的SSO方案,基于Gateway的SSO方案。面对不同的同台、不同的系统和不同的编程环境,要能最大可能地支持所有的平台、系统和编程环境,同时又要确定服务的实现代价保持相对固定,那么配合规范的Web Services解决方案和可插拔性的JAAS,选择基于Gateway&Agent的SSO设计方案是一个较为理想的方案。
  3.1 基于J2EE平台的SSO的实现原理
  基于J2EE平台的SSO的总体设计如图1所示,主要有3个实体:客户端、SSO代理、SSO网关和反向代理(Reverse Proxy):
  (1)客户端:用户或用户所在的计算机。
  (2)SSO Gateway: SSO Gateway为SSO Web服务的入口管理对象,根据配置的认证模式和凭证库对Web用户进行集中认证与授权,所有关于SSO的登录、登出,通过Web服务验证凭证的有效性、SSO全局会话管理、用户ID、存储管理登录都由SSO Gateway管理。认证成功后SSO Gateway会发送一个含有SSO Token的Cookie给客户端。
  (3)SSO Agent: SSO Agent安装在各个Web服务器上,所有发给受保护应用的请求都将被SSO 截获。SSO Agent持有SSO 网关的Web service客户端,通过JAAS根据用户的验证凭证确定他们是否具有所需的权限。如果用户为有效用户,则无需进行其它验证即可访问该页面;如果用户不是有效用户,则将用户重定向到SSO 网关进行验证。
  (4)Reverse Proxy: 对于多层模式和非J2EE的单点登录,Reverse Proxy的作用就是将来自其他域中的HTTP 请求转到当前域的主机上。Reverse Proxy截获HTTP请求到一个设置好的主机,然后判断该请求是否需要代理,代理到哪台主机。
  3.2 统一认证与授权过程:
  (1)客户端发出受保护的资源请求,SSO Agent截获并解析请求,判断是否存在SSO Token。
  (2)如果不存在SSO Token,则由SSO Agent所持有的SSO Gateway Web Services客户端通过SOAP将请求重定向到SSO Gateway 进行相应的登录处理。
  (3)客户端重定向到SSO Gateway的登录页面,用户输入验证Subject的信息(用户名或密码,或X.509证书或其他的)凭证信息进行认证处理。
  (4)SSO Gateway收到请求后,如果是登录请求,根据所配置的认证模式和凭证库调用SSO Web应用进行相应的认证处理,如果认证成功,则生成含有一个唯一的SSO SessionId的SSO Session Token,并将该SSO Token和用户授权凭证返回到Agent。如果认证失败,则返回认证失败页面给客户端,提示用户重新输入信息进行认证处理。
  (5)SSO Agent添加一个含有SSO Token和用户授权凭证的Cookie到用户的浏览器,并将请求重定向到(1)所请求的保护资源。
  3.3 SSO Gateway设计
  SSO Gateway采用Web services 技术架构,封装所有的认证与授权服务。所有的外部系统和对象要获得SSO所提供的服务,都需要调用SSO Gateway所提供的Web service接口。SSO Gateway的设计如图2所示。
  SSO Gateway根据配置的认证模式和凭证库负责对用户进行集中认证和授权。通过一个或多个Web应用来对外提供登录、登出和验证服务,会话管理,身份管理,用户安全信息管理,甚至还包括审计或日志服务以及可自行扩展的其他服务。
  SSO Gateway通过可以配置各种各样的认证方式,从而支持多种用户信息存储方式,如RDBMS,LDAP,XML等。
  3.3 基于JAAS的SSO Agent设计
  Java Authentication and Authorization Service(JAAS,Java认证和授权API)是用来提供访问控制的一组API,它提供了一种灵活和可伸缩的机制来保护客户端程序或服务器端的Java程序[3]。JAAS强调的是通过验证谁在运行代码及当前用户的权限,保护系统免受用户的攻击。它采用PAM(Pluggable Authentication Model可插入验证模块)进行认证,这种模式使得可以将一些标准的安全机制,例如Solaris NIS(网络信息服务)、Windows NT、LDAP(轻量级目录访问协议)、Kerberos等,通过一种通用的、可配置的方式集成到系统中。JAAS的这种可插入验证模式能够将不同的认证方式集中起来满足各种各样的安全策略需要JAAS允许不同的验证模型在运行时可被插拔。图3就是JAAS的PAM框架,将各认证模块从应用中单独抽象出来,然后用过JAAS API作为两者联系的纽带,这样应用程序就可以根据需要灵活地在其中“插入”所需要的认证模块[4]。
  JAAS允许应用程序保持独立的基本身份验证技术,可以在不改变应用程序本身的情况下插入新的或者改进的身份验证技术,而且可以同时配置多种认证方式。
  JAAS用Subject去描述一个实际认证的用户或其他个体,实际上就是存储一个用户信息的容器,包含主体(principal) 和凭证(credential)。Principal是指与Subject相关联的一些信息,一个Subject可能有一个或多个principal,每一个principal定义了Subject的一个指代信息从而能够代表任意的实体(如公司,个人,身份证号,login ID),也就是识别认证客户的方法。credential就代表用于认证的系统主体的安全信息,如密码,X.509 certificate等。
  通过使用JAAS登录模块完成认证。登录模块是JAAS体系中可插拔的组件并且在概念、接口和功能上都和UNIX可插拔认证模块(PAM)非常相似,JAAS可以指定多个登录模块来认证潜在的用户,这些登录模块可以由各种厂商开发,可以使用各种各样的认证方法从基本的操作系统层认证到使用轻便目录访问协议(LDAP)目录服务器的认证,到使用生物统计硬件或智能卡认证客户端的定制模块。
  完成一个认证的大致过程是这样的:首先建立LoginContext类,建立LoginContext类时需要指明使用哪一个LoginMoudle(登录模块)及使用哪一个callbackHandle从用户处获得用户信息(例如帐号和密码);调用LoginContext类的login()方法可以进行登录验证,通过验证后将建立代表此用户的Subject。
  在J2EE环境中,任何容器都可以配置各种JAAS登录模块来执行认证,以实现各种各样的认证形式。同时企业可以很容易实现自己的登录模块来加强自己的认证策略。因此采用JAAS机制来设计SSO Agent能很方便地将企业应用系统纳入到SSO的应用中,也便于集成遗留系统。给原有系统加上JAAS机制,替换原有系统的安全域对象,就可以实现SSO登录功能。JAAS LOGINMOUDLE通过SSO Agent所持有的SSO Getaway Web service的客户端调用SSO所提供的服务获取相关用户及权限信息,然后填充用户的Subject,从而实现用户的认证与授权功能。
  
  4 结束语
  随着企业应用系统的增加,企业的安全策略也越来越负责,要实施SSO的难度越来越大。设计一个实际通用的SSO解决方案,实现灵活的安全策略,对企业认证授权的统一管理有着非常重要的意义。本文采用JAAS和Web services技术实现SSO架构的设计,具有良好的扩展性和集成,不仅能够支持现有的应用系统,而且能够方便地支持遗留的应用系统而不需要对系统进行大规模的修改。
  参考文献:
  [1]柴晓路,梁宇奇著.Web Services技术、架构和应用[M].北京:电子工业出版社,2003:1-13.
  [2]张颖江,郑秋华,李腊元.单次登录技术分析及时集中身份认证平台设计[J]. 武汉理工大学学报(交通科学与工程版),2004(28).
  [3]sun 的J2EE安全模型[EB/OL].http://java.sun.com/security/jaas/doc/pam.html.
  [4]Paul Ilechko , Mannie Kagan.Authorization concepts and solutions for J2EE applications[EB/OL].http://www-128.ibm.com/developerworks/Websphere/library/techarticles/0607_ilechko/0607_ilechko.html.
  本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
其他文献
摘要:本文介绍了ASP.NET应用程序中的两种常用的身份验证的方法。给出了两种方法的实现,并对其特点进行了分析和比较。  关键词: ASP.NET;身份验证;网络安全  中图分类号:TP393文献标识码:B文章编号:1009-3044(2007)04-10891-01    1 引言  ASP.NET提供四种用户验证方式:Windows身份验证、窗口身份验证、Passport验证以及IIS身份验证
期刊
摘要:讨论了USB通信技术,分析了USB通信协议。画出了USB通信流,给出了USB通信参考模型以及USB设备枚举流程。  关键词:USB;通信技术;协议   中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)04-10959-01    1 引言  USB是一种新型、快速、双向、同步传输的并可以热插拔的通用串行数据传输总线 [1],它具有以下优点:  (1)使用简单:所用
期刊
摘要:CAPP智能文档是一种工艺卡片和工序卡片的快速生成系统。本文不仅介绍了该系统的底层架构和主要技术,而且以工艺卡片和工序卡片的建立为例详细阐述了其在VSTO中的实现和CAPP智能文档的基本操作。  关键词:CAPP智能文档;工艺卡片;工序卡片  中图分类号:TP311文献标识码:A 文章编号:1009-3044(2007)04-10930-03    1 智能文档的概述  CAPP智能文档是结
期刊
摘要:Domino系统提供了丰富的类和方法来支持其与异构数据库进行数据交换,本文通过分析基于Domino系统办公自动化系统信息共享的特点,探讨了Domino系统的三种异构数据交换方法,对三种方法不同的特点进行了分析,并就其具体实现进行了描述。   关键词:DOMINO;异构数据;交换技术;XML  中图分类号:TP317.1文献标识码:A 文章编号:1009-3044(2007)04-10918-
期刊
被众多《诛仙》迷期待的以原创小说为蓝本制作的《诛仙》网游终于开始了它的内测之旅。没有拿到内测激活码的小说迷们在期待着游戏的同时,又忍不住猜测,游戏里的任务和完美时空其他游戏一样多吗?门派技能是不是和书里写的一样?下面,就让经历过内测的笔者为大家揭开《诛仙》神秘的面纱。    一、门 派    《诛仙》中有修魔修道修佛各种类型正邪不一的门派,读者们在为邪派鬼王宗的狠辣手段所义愤填膺时,也唾弃着青云这
期刊
摘要:近一段时间以来,校园网部分用户受到一种名为ARP欺骗木马程序(病毒)的攻击(ARP是“Address Resolution Protocol”“地址解析协议”的缩写),病毒发作时其症状表现为计算机网络连接正常,却无法打开网页;或由于ARP欺骗的木马程序(病毒)发作时发出大量的数据包,导致局域网用户上网不稳定,极大地影响了校园网用户的正常使用,给整个网的安全带来严重的隐患。本人在文中讨论了AR
期刊
《完美国际》中的生产技能目前开放了四种,即巧匠、铁匠、裁缝和药师。与国内版不同的是,国际版的玩家可同时学习这四种生产技能,因此也就造就了大量的职业生产技能人的出现。国际版开放至今也近五个月的时间,想必游戏中的许多玩家早已将生产技能学到了很高的等级,并且也因这些高级生产技能而受益非浅。但是,由于高级生产技能的学习要求十分苛刻,同时让不少未学但又想学生产技能的玩家望而生畏。不过,如果大家能从自身的职业
期刊
摘要:我国现在使用的大多是国外研制的C类数据库管理系统,均采用自主访问控制产品,其安全性较低,数据库强制访问控制模块是为提高C 级数据库管理系统的安全性而设计,它外挂于数据库管理系统之上,可以增强系统的安全性。  关键词:数据库;强制访问控制;安全标签;主体;客体  中图分类号:TP311.52文献标识码:A 文章编号:1009-3044(2007)04-10923-01  数据库是电子商务、电子
期刊
摘要:结合嵌入式系统的特点对TCP/IP协议进行分析和精简,并且在KeilC51环境下编程实现了该协议子集,为通用TCP/IP协议的精简提供了一种较为简单的思路。  关键词:嵌入式系统;以太网;TCP/IP协议;UDP;ARP  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)04-10947-03    1 引言  目前,嵌入式系统与网络的结合已经成为嵌入式系统发展过
期刊
摘要:计算机机房是一个精密仪器聚集的实验室,对它的管理需要用比较科学的方法,本文提出一种基于WebGIS原理的机房管理系统设计方案,服务器采用JSP新技术,能够实现以空间的方式管理计算机机房的各项资源,功能完备便于操作,信息显示简明,使管理员不但能了解整个机房的仪器使用情况,也能掌握机房的网络线路配置。  关键词:互联网地理信息技术;机房信息管理系统;JAVA APPLET  中图分类号:TP30
期刊