- 浏览: 230398 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (127)
- 求职技巧 (1)
- java语言 (27)
- 数据库 (1)
- JDK 6.0学习笔记 (5)
- TOMCAT (2)
- JSP&Servlet (3)
- Data Binding (1)
- Windows (1)
- DB2 (15)
- Hibernate (5)
- XML (1)
- Financial Business (1)
- 项目管理 (0)
- Open source Framework (1)
- 总结思考反思 (2)
- Oracle (1)
- English Study (2)
- Other (28)
- java 模式 (8)
- en study (2)
- 异常处理 (4)
- Java 基础知识 (3)
- JDK1.5 Tiger (2)
- SSO (1)
- 开发中遇到的问题解决 (1)
最新评论
-
sonull:
怒赞!困扰多年的问题,就因为这个问题我一直都用subversi ...
如何使eclipse中subclipse插件的显示语言设置为英文 -
hanmiao:
果真如此,很好用,重启 eclipse 之后 svnclips ...
如何使eclipse中subclipse插件的显示语言设置为英文 -
wystark:
...
如何使eclipse中subclipse插件的显示语言设置为英文 -
minn84:
...
对年轻人的几点忠告 -
leizisdu:
引用 if(不包含物品i仅是可能的)感觉有些拗口
0/1背包问题-递归、动态规划
杨元 殷非
在税务行业信息化发展的关键阶段,应用整合已经非常重要,而应用整合的表现层首先要实现的就是单点登陆(SSO,Single sign-on的缩写),以下是笔者结合南京地税进行应用整合中SSO的技术实现.<!-- cio 正文页网画中画广告 -->
京地税目前有多种企业应用,包括征管系统、行政系统、辅助决策系统、公文系统、人事系统、电子地图、邮件系统等等,这些应用主要是采用三层体系结构(IE6.0+weblogic portal7.0 +weblogic server7.0 +oracle9i)来构架。所有的用户登陆需要通过weblogic portal进行。 我们在系统中使用SSO来实现用户通过一次认证(authenticate)来存取多个受保护的资源,也就是说,用户随后对受保护资源的存取,将不会导致每一次都要用户提供认证的信息,只需要一次认证即可。
一、SSO实现原理 1、概念:SSO的一种偏向技术的说法:用户只需登陆一次,就可使用多个SSO enable的应用系统。 (1)、单一的登陆点。理想的情况是用户通过任何应用系统都能进行SSO,这对于基于Web的系统是可行的。这种单一的登陆点在整个系统的设计中是唯一认证用户的地方,由登陆点将SSO token(针对不同的C/S,B/S应用可能还需要传递用户名,口令)传递给应用系统,应用系统利用SSO token来进行用户已认证的验证。我们将这个单一的登陆点称为SSO Entry。 (2)、SSO enable意味着对应用系统的修改不可避免。并不是任何系统都能够使用SSO,只有那些符合SSO规范,使用SSO API的应用系统才具有SSO的功能。简单地说就是要修改已有的应用系统,屏蔽已有的应用系统的用户认证模块,使用系统提供的SSO API来验证用户,以及对用户的操作进行授权。 (3)、需要统一的认证,权限信息库。通常,认证与授权管理模块以一种应用专有的方式实现,系统的授权模型、认证,授权信息存贮结构与访问控制逻辑与应用的业务逻辑之间耦合紧密。这种设计与实现方式的缺点是显而易见的:由于认证、授权模块与应用逻辑之间的紧耦合使得认证、授权模块很难进行扩展与维护;认证、授权模块的设计与编码需要很大的工作量,而且很难在不同的应用系统之间共享与重用。这也是越来越多企业应用需要SSO的原因之一。 SSO要求有统一的认证,权限存放库。但现实中,有的系统无法使用外部的认证,授权信息库,所以就需要在应用系统和Portal Server之间进行认证,同时进行授权信息的数据同步。 2、实现描述:在用户成功登录 weblogic Portal之后,系统提供的Login Delegate机制来为用户登录到其有权可以使用的应用系统。系统提供Logout Delegate机制实现用户的注销功能(即SSO logout)。 用户存取由Portal SSO保护的若干资源,SSO会话服务(Session/SSO Service)提供了授权的证明,这样就不再需要用户重新进行身份验证了。在这种方式下,即使用户要访问不同的域(weblogic domain)的应用,我们提供的Portal SSO Service为其保持会话服务。 同时,SSO还包括的与登录恰恰相反的,统一的注销点,即用户一旦从Portal注销,则亦当从所有参与Portal SSO的应用注销。此处有一个例外,就是当用户从Portal登录并转向一个应用后,经过一段时间后可能会出现用户的该应用的会话还有效时用户的Portal会话过期时,此时用户将只能使用该应用,直到该用户再次登录Portal。 3、通过SSO Agent:当用户试图通过存取受保护的应用资源时,系统提供安装在不同应用上的SSO Agent来截取用户对资源的请求,并检查请求是否存在会话标识符,即token。如果token不存在,请求就被传递给Portal SSO,在Portal SSO上会话服务负责创建会话token,然后认证服务将提供登陆页面以验证用户。 4、创建会话Token:在用户身份验证之前,会话服务就创建了会话token。token为随机产生的Portal Server 会话标识符,该标识符代表了一个确定用户的特定会话。创建会话token后,认证服务把token插入cookie中在用户的浏览器中设定cookie。在token被设定的同时,该用户将会看到一个登陆页面。 5、用户认证:用户收到登陆页面和会话token后,填入合适的认证信息。当用户提交登陆页面后,这些认证信息就被发给认证提供者(authentication provider)(LDAP服务器,RADIUS服务器等)进行验证。一旦认证提供者成功验证了认证信息,用户就被认为是通过了认证。Identity Server会从用户的token中取出会话信息并将会话状态设为有效。此后,用户就可以访问这些受保护的资源。 6、cookie和会话token:Cookie是由Web服务器创建的信息包,并传递给浏览器。Cookie 保存类似用户习惯等Web服务器产生的信息。它本身并不表明用户通过了认证。Cookie是特定于某个域的。在Identity Server的实现中,cookie由会话服务产生,并由认证服务设定。而且,Identity Server的cookie是会话cookie,存储在内存中。会话token由会话服务创建并插入Cookie。会话token利用安全随机数发生器产生,并包含Portal Server特有的会话信息。在存取受保护的资源之前,用户由认证服务验证,并创建SSO token。 二、SSO技术实现 1、SSO entry SSO entry 作为系统唯一的登陆点将完成如下的功能: (1)提供用户身份认证的登陆页面; 注意SSO entry 并不提供通知应用系统SSO token已失效的功能,这一问题并不大,因为SSO token失效后,SSO entry 已被关闭。用户只有重新认证,才能获取新的SSO token。 2、SSO 部署 3、SSO实现方式 SSO 的实现方式按照应用系统与Portal Server的交互程度分为三种。需要指出这些SSO的实现方式并没有优略之分,不同的实现方式适应不同的应用环境。解决现实中遇到的不同问题。真单点登陆: 通过SSO entry认证后,应用系统利用SSO API同Portal Server通信,验证用户是否经过认证。新开发的应用系统大多使用这种SSO的实现方式。这种方式需要对应用系统的认证模块进行修改。伪单点登陆:通过SSO entry认证后,应用系统还要自己进行用户的认证。这种方式适用于那些无法修改认证模块的应用系统。我们应用系统的整合采用该方式进行。整合第三方软件的单点登陆:Tarantella和Citrix都是将C/S应用系统转化为Web应用的第三方软件系统。在某些应用环境下,这类软件将发挥其作用。这种SSO实现方式在实施中并不使用,列出这种使用方式主要用来展现Identity Server的扩展性。 4、SSO的实现 (1)用户从Portal登录 用户访问应用系统:之后,当用户访问征管的某个应用时,征管系统发现该用户还未经认证,则将其sessionID与SSOService中登记的uid/sessionID比较,如果存在匹配,则认证通过,将用户id与session相关联。之后用户就可以直接访问征管系统了。 (2)SSO单点注销 (1)用户注销总是从Portal开始; 三、安全性分析 Portal SSO的安全性需要从几个方面理解: 1.客户登录Portal Server之后SSO到应用的安全性,即SSOToken的安全性; Portal Server生成的SSO token 因为需要在应用程序间传递,所以SSOToken比较容易被窃取,但Portal Server保证了SSOToken的唯一性,那些盗用合法SSOToken的人无法通过SSOToken的验证。因为SSOToken的生成收集了用户端和服务器端的很多信息,当非法用户持有效的SSOToken试图访问某应用时,该应用将通过Portal Server的SSOService进行SSOToken验证时,SSOToken的这些信息以及Portal Server的安全算法确保了盗用者即使拿到合法用户的SSOToken也无法通过SSOToken的有效性验证。所以SSOToken的安全性也得到了保证。 用户没有SSOToken的时候,如果客户要访问某应用,如果用户没有该应用的会话信息也没有Portal的SSOToken,则该用户必须先通过Portal的认证并SSO到该应用;如果用户已经在应用登录成功(可能是该应用保留了原有的认证入口,用户通过该入口访问此应用,也有可能是用户从Portal 登录后,通过SSO访问该应用,经过一段时间后,用户的Portal SSOToken已经过期,但是用户在该应用中的会话仍然保持有效),则用户可以继续使用该应用系统而无需重新认证。但是如果用户想访问Portal或者与Portal进行SSO的其它应用的话,则用户须经过Portal的认证并拿到SSOToken。所以在这种情况下SSOToken也是安全的。 每个用户的SSOToken只在其当次会话过程中有效,离开其当次会话,SSOToken即被视作无效,因此这种情况下也是安全的。 来源:CCW
(2)根据用户的权限,显示可供用户使用的应用系统;
(3)调用用户选择的应用系统(B/S或C/S均可);
(4)为应用系统传递SSO Token(针对不同的C/S,B/S应用可能还需要传递用户名,口令);
(5)关闭SSO;
(6)SSO token失效后,关闭SSO entry。
上面是整个系统的部署的示意图。白色的立方体表示应用系统。浅蓝色的立方体表示Portal SSO平台。从上图可以看出:各个应用系统各个应用系统与SSO entry发生联系。SSO entry 需要向应用系统传递SSO Token,用户名,口令;启动应用系统。
说明:以上蓝色区域为Portal Server上的服务,白色为需要与Portal进行SSO的应用,绿色为每个应用的SSO Entry。代理登录的具体过程:用户首先登录Portal,Portal处理完登录后,启动代理登录,为用户登录应用系统,Portal把用户转向到应用系统,应用系统再把用户在征管系统的sessionID转发给Portal,登录代理(Login Delegate)把用户在征管系统中的sessionID和用户id发到征管系统的SSO Service进行登记,Portal把用户访问转向征管系统SSOEntry,征管系统SSOEntry通过用户的sessionID得到SSOService中记录的用户在Portal的用户userID,并把当前用户认可为此Portal userID对应的在征管系统中的用户,征管系统把用户访问转回Portal。接着登录代理再对SSO应用列表中的其它应用进行代理登录。代理登录完成,用户被重定向到Portal的相关页面。
说明:
(2)注销代理(Logout Delegate)将注销消息发到各应用的SSO Logout Entry;
(3)应用的SSO Logout Entry注销本地的用户会话记录;
(4)注销Portal上的用户会话记录。
2.客户无SSOToken时,首先访问应用的安全性;
3.客户有SSOToken时想通过仿冒别人的有效SSOToken来进行非法的访问。
发表评论
-
Eclipse 插件集成myeclipse 7.0
2009-08-16 16:34 4145目前7.0的插件包没有找到下载地址,先使用updates直接从 ... -
如何使eclipse中subclipse插件的显示语言设置为英文
2009-08-16 14:13 5151虽然eclipse/myeclipse显示的语言为英文,但是网 ... -
疤痕实验--健康、积极的心态面对人生
2009-06-07 22:23 1437路易斯-拉皮德斯在他的 ... -
读取Properties文件的六种方法
2009-05-22 10:34 1070Key Word: properties 文件. 使用 ... -
Java中的Connection Pool
2009-05-14 14:51 2808我们需要使用Connection Pool的情况都通常都是指网 ... -
Java程序员的推荐阅读书籍
2009-05-10 08:01 1130作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广, ... -
红油的做法
2009-05-03 18:43 17330 推荐 我想感受 ... -
SSO
2009-04-21 13:28 809SSO英文全称Single Sign On,单点登录。SSO是 ... -
Mylyn 简介 一个不错的eclipse工具
2009-04-19 23:45 2027Mylyn(旧称Mylar)是eclipse的一个插件,用 ... -
Eclipse 内存溢出OOM
2009-04-16 11:28 1506运行eclipse时出现错误提示框 错误提示大概如 ... -
MANIFEST.MF *** JAR中调用资源文件
2009-04-16 10:08 2520打开Java的JAR文件我们经 ... -
终于搞定word2007无法显示图片的问题
2009-04-02 10:41 4055最近突然发现我的word 2007无法显示图片了,任何图片、v ... -
一位软件工程师的6年总结
2009-03-31 16:20 881又是一年毕业时 ”,看 ... -
十招让你的工作效率up,up再up
2009-03-27 19:03 1185.确定方向 不走冤枉路 ... -
心理学家推荐3个10方法可助人做出正确决策
2009-03-10 21:19 712拿破仑选择了最能展示 ... -
Log4j配置[输出到文件]
2009-03-07 21:48 2450package net.meybo.mail;import o ... -
特殊字符编码大全
2009-03-04 14:33 1270" " & &a ... -
笔记阅读摘要(值得每天多看几遍)
2009-02-18 20:09 8111. A web application uses a de ... -
程序员四大忌
2009-02-17 16:46 764一忌:轻易言败,没有 ... -
J2EE架构分析
2009-02-16 22:48 1756J2EE架构是当前 ...
相关推荐
Java单点登录(Single Sign-On,简称SSO)是一种网络身份验证...这份"java单点登录的实现与应用整合中SSO的技术实现.pdf"资料应该涵盖了这些关键点,并提供了详细的指导和示例,对于理解和实践Java SSO具有很高的价值。
SSO技术的应用通常涉及到多系统间的身份验证整合,使得用户只需要一次登录就能访问所有授权的应用系统。以下将详细探讨几种实现SSO的方法及其应用。 1. **商业SSO解决方案**: - **Siteminder**:由Netgrity开发,...
Java 单点登录实现与应用整合中的 SSO 技术实现 Java 单点登录是指在多个系统中,只需要登录一次,就可以访问所有相关系统的功能,提高了用户体验和系统安全性。本文将介绍 Java 单点登录的实现方法,并讨论如何在...
Java单点登录(Single Sign-On, SSO)是企业级应用整合中常用的一种技术,它允许用户在一次登录后即可访问多个相互关联的应用系统,无需重复输入凭证。本篇文章主要探讨了Java环境下SSO的实现策略及其在实际项目中的...
SSO(Single Sign-On)单点登录是一种身份验证机制,允许...SSO技术的实现涉及多方面的考虑,包括安全性、用户体验、系统集成和合规性。理解其原理和挑战,并结合最佳实践,可以帮助企业构建出高效、安全的SSO系统。
为应对上述挑战,BEA Systems(现已被Oracle收购)提出了一套全面的应用整合技术方案——AquaLogic User Interaction (ALUI),旨在通过统一的界面和服务整合,实现业务流程的优化与个性化服务的提供。 ##### ALUI...
SSO(Single Sign-On)是目前比较流行的服务于企业业务整合的解决方案之一,SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 SSO体系中的角色主要有三种: 1. User(多个) 2. ...
标题 "jforum与web项目的整合(通过Cookie实现SSO)" 涉及的是将开源的JForum论坛系统与其他Web应用程序进行集成,并利用Cookie技术实现单点登录(Single Sign-On,简称SSO)。SSO允许用户在一个应用系统中登录后,...
- **Kerberos**:一种网络认证协议,通过票证(ticket)来验证用户对网络资源的请求,是SSO实现中常用的认证方式。 - **CardSpace**:微软开发的一种数字身份管理工具,旨在提供更安全、更私密的在线身份验证方法。 ...
总结来说,Java SSH SSO客户端实例是一个结合了Struts2、Spring和Hibernate框架,利用SSO技术为用户提供统一登录体验的项目。开发者通过这个实例可以学习到如何整合这些框架,以及如何实现和配置SSO服务,提升应用的...
SSO(Single Sign-On,单点登录)是一种身份验证...总之,SSO技术是现代企业信息化建设中的重要组成部分,它通过整合认证过程,提高了用户体验,简化了系统管理,同时也为企业提供了更高效、更安全的身份验证解决方案。
在"百度_身份认证吧_谈谈应用整合中的单点登录(SSO)系统"讨论中,可能会涉及到实际应用中遇到的问题和解决策略,例如跨域认证、安全策略的设置、多环境下的部署方案等。文件夹".files"通常存储了这些网页的附件,...
5. **HTTP重定向和重写**:SSO实现中,浏览器和服务器间的交互往往涉及到HTTP重定向和URL重写,以确保用户在不感知的情况下完成登录过程。 6. **跨域问题**:在多个Web应用间实现SSO时,可能会遇到跨域问题,需要...
【标题】"sso demo 工程"是一个用于身份验证单点登录(Single Sign-On,简称SSO)的示例项目。SSO是一种允许用户在多个应用系统中使用一次登录,即可...对于想要了解或实践SSO技术的人来说,这是一个非常宝贵的资源。
在"SSO.rar_domino_sso"这个主题中,我们将深入探讨如何实现J2EE应用服务器(如IBM WebSphere、Oracle WebLogic等)与Lotus Domino服务器之间的SSO整合。 一、SSO的基本原理 SSO的核心思想是通过共享一种安全的...
### 单点登录SSO解决方案之SpringSecurity+JWT实现 #### 一、单点登录(SSO)概述 单点登录(Single Sign-On,简称SSO)是一种认证机制,允许用户仅通过一次登录就能访问同一域下的多个应用程序和服务。这种机制...