设为首页 收藏本站
云服务器等爆品抢先购,低至4.2元/月
查看: 790|回复: 0

[经验分享] 什么是单点登录?单点登录的简单实现

[复制链接]

尚未签到

发表于 2017-2-18 13:15:37 | 显示全部楼层 |阅读模式
在网站建设的过程中,多个应用系统一般是在不同的时期开发完成的。各应用系统由于功能侧重、设计方法和开发
技术有所不同,也就形成了各自独立的用户库和用户认证体系。随着网站的发展,会出现这样的用户群体:以其中的一个用户为例,他(她)使用网站的多个应用系
统,但在每个应用系统中有独立的账号,没有一个整体上的网站用户账号的概念,进入每一个应用系统前都需要以该应用系统的账号来登录。这带给用户不方便的使
用感受,用户会想:既然我使用的是同一个网站上的应用,为什么不能在一次在网站上登录之后不必再经过应用系统认证直接进入应用系统呢?用户的要求我们称之
为 "单点登录"。



单点登录的具体实现有很多种选择,包括:


  • 采用专门的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="center" height="100%" hspace="0"
marginheight="0" marginwidth="0" scrolling="yes"
style="background-color:#f7f7ff;">
</IFRAME>
  或:
Href src=&#8220;http:// host1/names.nsf?Login&Username=admin&Password=pass&RedirectTo=/names.nsf&#8221;
以上采用的是在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, &#8220;admin&#8221;, &#8220;password&#8221;);

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解决方案上有着丰富的经验。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-343918-1-1.html 上篇帖子: 一起学习SSIS 下篇帖子: WEB性能测试介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表