- 浏览: 2833107 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (1173)
- 名言警句 (5)
- 心情随笔 (50)
- 数据库 (57)
- Java基础 (241)
- J2EE框架 (91)
- 数据结构 (12)
- 程序设计 (21)
- WEB技术 (128)
- 网络日志 (12)
- IT资讯 (247)
- linux (64)
- solaris (2)
- 其它 (143)
- WebService (4)
- 日语学习 (2)
- 机器人 (5)
- Android (5)
- cgywin (3)
- Game (1)
- DWR (1)
- spring (8)
- canvas (1)
- Guava (3)
- Modbus (5)
- 测试 (6)
- mongodb (9)
- Quartz (2)
- Cron (1)
- windows (2)
- 持续集成 (1)
- bootstrap (3)
- 结对编程 (1)
- nodejs (1)
- Netty (1)
- 安全 (3)
- webstorm (2)
- sparkline (1)
- Job (1)
- git (3)
- Maven (3)
- knockout (5)
- jquery (1)
- bower (1)
- docker (1)
- confluence (4)
- wiki (1)
- GoogleMap (1)
- jekyll (10)
- ruby (2)
- npm (3)
- browserify (1)
- gulp (3)
- openwrt (1)
- discuz (3)
- 输入法 (1)
- JPA (1)
- eclipse (2)
- IntelliJ (1)
- css (1)
- 虚拟机 (1)
- 操作系统 (1)
- azkaban (2)
- scrum (1)
最新评论
-
pangxiea_:
你好, 想请问一下 Linux下 这么使用rxtxcomm 在 ...
使用Java进行串口通信 -
abababudei:
请教一下,这个您是怎么解决的:/dev/ttyS2enteri ...
Java应用程序的MODBUS通讯 -
xuniverse:
hannibal005 写道楼主,我问下 request.se ...
用javascript与java进行RSA加密与解密 -
atxkm:
找了一下午,终于找到了
gulp 拷贝文件时如何移除文件目录结构 -
kalogen:
gtczr 写道非常感谢,经过我自己的修改,已经完美实现。发出 ...
用javascript与java进行RSA加密与解密
在门户项目中,经常会遇到如何实现单点登录的问题,下面就本人的经验做个总结。欢迎大家进行补充讨论。
单点登录的具体实现有很多种选择,包括:
- 采用专门的SSO商业软件: 主要有:Netgrity的Siteminder,已经被CA收购。Novell 公司的iChain。RSA公司的ClearTrust等。
- 采用门户产品供应商自己的SSO产品,如:BEA的WLES,IBM 的Tivoli Access Manager,Sun 公司的identity Server,Oracle公司的OID等。
- 这 些商业软件一般适用于客户对SSO的需求很高,并且企业内部采用COTS软件如:Domino,SAP,Sieble的系统比较多的情况下采用。并结合身 份管理。统一认证等项目采用。采用这些软件一般都要对要集成的系统做些改造,如在要集成的系统上安装AGENT。现在一般只提供常见软件 如:Domino,SAP,Sieble,常见应用服务器:weblogic,websphere等的AGENT。要先统一这些系统的认证。一般采用 LDAP或数据库。然后才能实现SSO。比较麻烦。
- 另外,如果不想掏银子,也有OPEN SOURCE的SSO软件可选:主要有:http://www.josso.org/ https://opensso.dev.java.net/ http://www.sourceid.org 等。具体怎么样就不清楚了。
如果项目对SSO的要求比较低,又不想对要被集成的系统做任何改动,可采用下面介绍的方式简单实现:下面我们通过一个例子来说明。假如一个门户项目要对下面的几个系统做SSO。
用户在这些系统中的用户名,密码各不相同,如:员工号为001的员工在这些系统中的用户名,密码分别如下:
用户 系统 用户名 密码
001 Portal系统 A 1234
001 邮件系统 B 2345
001 DOMINO系统 C AAAA
001 报销系统 D CCCC
001 工资系统 E BBBB
首先,建立员工在PORTAL系统中的用户名和其他系统中的用户名之间的对应关系
首先,要建立员工在PORTAL系统中的用户名和其他系统中的用户名之间的对应关系并保存。可保存在表中或LDAP中或文件系统中。当然要考虑 这些系统之间的数据同步问题。比较好的方式是找到用户在这些系统中的都存在的唯一信息(如员工号,MAIL地址,姓名等)。通过唯一信息实时到各个系统中 去取认证所需要的信息。就不需要考虑数据同步问题。比较实用。可以建立类似下面的表:密码可采用加密保存。如果是采用BEA的Weblogic Portal,可采用UUP来保存这些信息。
( user varchar2(20), /*用户名*/ app_name varchar2(20), /*应用系统*/ architect varchar2(4), /*应用系统的架构BS或CS*/ app_company varchar2(50), /*用户所属分公司*/ app_department varchar2(50), /*用户所在的部门*/ app_user varchar2(15), /*在该系统中的用户名*/ app_passwd varchar2(15), /*在该系统中的密码*/ app_cookie varchar2(30), /*COOKIE名称*/ form_user varchar2(20), /*认证页面中FORM的用户名字段*/ form_passwd varchar2(20), /*认证页面中FORM的密码字段*/ app_special varchar2(20) /*其他*/ );
通过IFRAME或超连接方式集成目标系统,并进行SSO
通过IFRAME或超连接方式集成目标系统,并在URL中带上用户名和密码。如集成DOMINO可采用如下方式:
<IFRAME src=http://host1/names.nsf?Login&Username=admin&Password=pass&RedirectTo=/names.nsf width="100%" frameborder="0" align="middle" height="100%" hspace="0" marginheight="0" marginwidth="0" scrolling="yes" style="background-color:#f7f7ff;"> </IFRAME>
或:
Href src=“http:// host1/names.nsf?Login&Username=admin&Password=pass&RedirectTo=/names.nsf”
以上采用的是在HTTP中直接传递明码,为提高安全性,可采用HTTPS来传递用户名和密码。另外采用这种方式被集成的系统必须支持FORM方式认证。J2EE应用,DOMINO等都支持FORM认证。
这两种方式如果SSO成功,就自动进入目标系统的界面,如果实现会显示目标系统的登录界面。其效果图如下:
这种方式,必须维护对应关系表,如上面的sso_info。更好的方式是提供界面,让最终用户自己维护这种对应关系,可模仿Compoze portlets for lotus的做法,在用户第一次进入要与之做SSO的系统时,如DOMINO系统,显示一个界面,让用户自己输入他在该系统中的用户名/密码等信息。并保 存到表中或LDAP等其他数据源中。以后用户要进入这些系统时,就直接从表中或其他数据源中取用户的用户名/密码等信息,帮助用户做认证。建议采用这种方 式。如下图所示。如果用户改变了自己在DOMINO系统中的用户名,密码。从门户系统进入DOMINO系统时,认证会失败,就重新显示类似下面的界面。让 用户重新输入他在DOMINO系统中新的用户名,密码并保存。
以上这种实现方式,一般需要浏览器支持COOKIE,所以要注意浏览器的配置,在开发阶段,为方便调试,可设置IE,让它显示COOKIE的名称。如下所示:
采用这种方式,对要集成的系统不需要做任何的改动。如果PORTAL系统中的用户在被集成的系统中的权限都一样,可采用建立一个通用用户的做 法。也就是所有在PORTAL系统中的用户都采用这个通用用户进入目标系统。这种方式等于是采用页面集成方式做集成。比较方便使用。另外,有时候需要采用 调用API,或配置Adapter等应用集成方式来集成其他系统,一般也是通过定义一个连接专用的用户。在API中或在配置Adapter的时候写死。如 采用JAVA API方式集成DOMINO:
lotus.domino.Session dominoSession = NotesFactory.createSession(dominoServer, “admin”, “password”);
CS结构实现方式
经常有人问CS结构的应用如何实现SSO,本人的建议是对这种系统不要自己去实现SSO。很麻烦,其实输个用户名,密码没什么大不了的。如果要 实现,一是采用商业软件。另外也可以采用以下方式:在PORTAL的PORTLET上建立超连接。并通过APPLET方式启动CS结构的应用系统的登录界 面。然后通过如下的方式把用户名/密码传递过去。
-不能做任何改动的客户端 - WIN消息(给登录窗口发送用户名,密码等登录所需要的信息),模拟键盘(java有模拟键盘输入的API)
-可以做改动的客户端 - 参数传递,并让登录的EXE文件读取参数进行认证。
因为要让APPLET执行本地的EXE文件,所以必须对IE中的JRE的安全进行设置。
其他:
在采用以上方式实现了SSO后,要注意LOGOUT,可采用与LOGIN相同的方式。也可以通过被集成系统的超时设置来实现。
单点登录SSO技术资料收集
- 统一用户认证和单点登录解决方案: 计算机世界网上的文章,比较全面的介绍统一用户认证和单点登录解决方案
- 惠普灵动单点登录(SSO)解决方案: 包括C/S结构的系统单点登录解决方案
- 网站用户单点登录系统解决方案: 通过令牌方式实现网站用户单点登录
- WebLogic平台的Web SSO(SAML)解决方案: 在WebLogic 8.1SP4中,提供了用于和Microsoft Windows客户端进行SSO的Single Pass Negotiate Identity Assertion Provider。本文对其做了详细的介绍。
- http://blog.beijingnet.com/index.php?blogId=4: 收录了一些SSO方面的文章
- 应用整合中SSO的技术实现: 作者介绍了南京地税进行应用整合SSO的技术实现方案
作者简介 | |
dev2dev ID: xcjing ,BEA 资深技术顾问,加入BEA中国多年,在门户技术、RFID解决方案上有着丰富的经验。 |
评论
在“通过IFRAME或超连接方式集成目标系统,并进行SSO”小节中使用iframe将用户名和密码传递到客户系统中后,客户系统怎么获取这些信息并验证登陆呢?
目的:
对目前已有的 Web 应用系统,和将来待开发的 Web 应用系统进行集成,实现单点登录。
要求:
1. 对已有的 Web 应用系统不作大规模改造。
2. 不限制待开发的 Web 应用系统的开发工具。
3. 不增加待开发系统的开发难度。
分析:
1. 目前,已有的系统都各自维护自己的一套用户库,每个系统中的用户数、用户名、密码几乎都各不相同。要将已有的用户库进行统一是不现实的。因此,我们可以通过将单点登录系统中的用户与其它个系统中的用户建立映射,来实现用一个帐号来管理多个系统的目的。
2. 已有的 Web 应用系统、以及待开发的 Web 应用系统,可能不在同一个域下,虽然会话本身是保存在服务器端,但是会话 id 是需要 cookie 来传递的,而 cookie 不允许跨域访问,而且考虑到各个系统的开发工具也各不相同,即使在同一个域下,不同的开发工具所开发的应用程序之间也很难共享会话,因此要用共享会话的方式来实现单点登录也不现实。因此我们通过在客户端浏览器、单点登录系统和 Web 应用系统之间传递临时会话,并让 Web 应用系统直接到单点登录系统中获取认证信息来实现单点登录。为保证不同开发工具都能够到单点登录系统获取认证信息,我们采用 xml-rpc 在 Web 应用系统和单点登录系统之间进行通讯。
实现:
单点登录系统中设置 4 个表:
1. 单点登录系统用户表,包含 user_id,name,password 3 个字段。
2. Web 应用系统表,包含 app_id,name(Web 应用系统名称),checkurl(Web 应用系统中用来验证用户登录的程序地址) 3 个字段。
3. 单点登录系统用户到各个 Web 应用系统的用户映射表,包含id,user_id,app_id,name,password 5 个字段。
4. 临时会话表,包含 hash(临时会话的 hash 编号),id(对应单点登录系统用户到各个 Web 应用系统的用户映射表中的 id 字段) 2个字段。
用户登录单点登录系统时,通过单点登录系统用户表中的字段来验证用户身份。登录以后,用户可以设置各个系统到该系统用户的映射关系。设置好以后,当通过该系统进入其他某个 Web 应用系统时,该系统会为该用户和该系统生成一个临时会话编号(hash),并转到 Web 应用系统中的登录检测页面,登录检测页面通过获取到的临时会话编号,来调用单点登录系统的获取用户名和密码的 xml-rpc API,如果用户名密码如果正确,则转到正常登录后的页面,如果不正确,则转到登录错误的页面。这里,xml-rpc API 在返回用户名和密码后,将删除单点登录系统数据库中相应的临时会话,这样不但用户名、密码都是在服务器之间进行传递的,并且临时会话存在的时间也是尽可能的短,因此只要保证服务器之间的对话不能被监听,即可保证安全性。已有系统需要增加一个用于单点登录系统的登录验证页面,该页面工作过程大致如下:
1. 获取 客户端 hash 值
2. 通过 hash 值得到用户名和密码(xml-rpc 调用)
3. 通过用户名和密码进行身份验证
4. 返回身份验证后的页面
发表评论
-
ATOM编辑器快捷键大全
2021-02-28 10:03 372在Github上总结的ATOM 快捷键,用ATOM 编辑器的 ... -
使用Amazon的AWS来搭建属于自己的shadowsocks服务器
2015-04-08 22:22 16182相信有不少水友已经 ... -
开车技术
2014-10-16 12:24 509如何判断车距,这个太实用了 一、超车变道时如何判 ... -
Running Jar file in Windows
2014-04-30 10:11 768Easiest route is probably upgr ... -
Windows的命令行下设置网络代理
2014-03-31 09:42 3364在公司访问网络的时候,需要设置代理,设置浏览器的代理是相当的 ... -
超全面的收房小知识
2013-12-29 15:09 707验房:就是竭尽全力发现问题,进而在装修的时候着手解决这些问题 ... -
Kmplayer的各种功能设置
2013-11-17 17:59 1988Kmplayer的各种功能设置 ... -
9 Ways To Make Thunderbird Load Your Email Faster
2013-09-14 15:57 1192If you asked anyone for the fi ... -
Protobuf 的安装使用总结
2013-09-12 13:28 8469ProtoBuf的官方下载包并不包含jar文件,需要用户自己 ... -
Java应用程序的MODBUS通讯
2013-09-06 14:15 17684实验目的 JAVA应用程序通过MODBUS协议RTU模式读 ... -
在本地使用java收发/调试Modbus协议数据
2013-08-28 13:59 184861. 安装Modbus仿真工具Mo ... -
Modbus Error Code List
2013-08-27 16:53 1630HEX Error Code for Modbus Plus ... -
49 款人脸检测/识别的API、库和软件
2013-08-26 19:58 1779自从谷歌眼镜被推出以 ... -
sublime配置全攻略
2013-08-17 14:16 2124sublime本身功能有限,我们需要装上一些插件使其变得 ... -
程序员提高效率工具
2013-08-12 11:14 1374windows下的虚拟桌面管理工具 windows xp ... -
Go 编程语言的 12 条最佳实践
2013-08-09 17:53 1067最佳实践 维基百科的定义是: “最佳实践是一种方法或技术 ... -
sublime 插件管理
2013-08-08 18:00 1200插件管理 1、安装Package Control 按C ... -
sublime2快捷键
2013-08-08 17:51 1098快捷键 Ctrl+L 选择整行(按住-继续选择下行) C ... -
sublime及相关资源
2013-08-08 17:10 883Sublime Text3 Buld 3038 中文优化注 ... -
为设计师准备的 15 个免费新鲜的字体
2013-08-04 17:45 1045Axe Handel Going Fast Ka ...
相关推荐
简单实现web单点登录,使用J2EE技术(servlet/jsp/),使用filter拦截请求,cookie保存用户登陆信息
openmeetings实现简单的单点登录(自动登录) openmeetings实现简单的单点登录(自动登录)
利用springMvc 实现的简单的单点登录Demo,内含三个小Mavn项目分别是 1、认证中心SSOServer 2、子系统1SSOClient1 3、子系统2SSOClient2 文章请参考 http://blog.csdn.net/qq_31183297/article/details/79419222
共有3个项目源码,其中main项目为认证服务,one项目和two项目完全一样。测试已通过,运行环境是tomcat-6.0和myeclipse-8.5
文档详细介绍单点登录原理与简单实现,希望可以帮助学习的人
单点登录的简单实现在门户项目中,经常会遇到如何实现单点登录的问题,下面就本人的经验做个总结。欢迎大家进行补充讨论
该资源是springsecurity+oauth2+jwt实现的单点登录demo,模式为授权码模式,实现自定义登录页面和自定义授权页面。应用数据存在内存中或者存在数据库中(附带数据库表结构),token存储分为数据库或者Redis。demo...
单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 本示例简单的实现了SSO认证系统,...
在门户项目中,经常会遇到如何实现单点登录的问题,单点登录的具体实现有很多种选择 如果项目对SSO的要求比较低,又不想对要被集成的系统做任何改动,可采用下面介绍的方式简单实现
间接授权通过令牌实现,sso认证中心验证用户的用户名密码没问题,创建授权令牌,在接下来的跳转过程中,授权令牌作为参数发送给各个子系统,子系统拿到令牌,即得到了授权,可以借此创建局部会话,局部会话登录方式...
演示DEMO 博文链接:https://xiaoa7.iteye.com/blog/312295
有服务端的所有源码,将tomcat目录下的所有资源直接拷到Tomcat服务中间件的webapp目录下,阅读tomcat-webapp中的read.txt文档,查看使用说明,适用于第一次开发CAS单点登录的同学们,简单易上手。
最新优化的,采用javaweb实现简单的单点登录,压缩包里添加了几个常用的几个例子,欢迎下载
http://www.blogjava.net/xcp/archive/2010/04/13/318125.html 页面的源码地址无法访问,我在其他地方找到了。可以运行的三个简单应用,配置完成后可以实现单点登录,供初学者研究其原理。
单点登录,Single Sign On,也...实现单点登录,说简单一些,就是解决如何产生和存储那个信任,再就是其他系统如何验证这个信任的有效性。 单点登录初学的入门 , 后面有相应演示的Demo,通过demo1,demo2,项目中的应用
用户单点登录的一个简单实例。主要实现同时只能一个用户在线。
系统做对接集成时,可以实现系统间简单的单点登录,亲测有效,绝对可靠
NULL 博文链接:https://c610367182.iteye.com/blog/1983558