`
desert3
  • 浏览: 2158654 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

SSO(Single Sign On、单点登录)、跨域SSO

 
阅读更多
SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。

SSO技术实现机制:
当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份校验,如果通过校验,应该返回给用户一个认证的凭据--ticket(加密,防篡改);用户再访问别的应用的时候就会将这个ticket带上,作为自己认证的凭据,应用系统接受到请求之后会把ticket送到认证系统进行校验,检查ticket的合法性。如果通过校验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。

从上面的视图可以看出,要实现SSO,需要以下主要的功能:
  • 1、所有应用系统共享一个身份认证系统:统一的认证系统是SSO的前提之一。认证系统的主要功能是将用户的登录信息和用户信息库相比较,对用户进行登录认证;认证成功后,认证系统应该生成统一的认证标志(ticket),返还给用户。另外,认证系统还应该对ticket进行校验,判断其有效性。
  • 2、所有应用系统能够识别和提取ticket信息:要实现SSO的功能,让用户只登录一次,就必须让应用系统能够识别已经登录过的用户。应用系统应该能对ticket进行识别和提取,通过与认证系统的通讯,能自动判断当前用户是否登录过,从而完成单点登录的功能。

上面的功能只是一个非常简单的SSO架构,在现实情况下的SSO有着更加复杂的结构。有两点需要指出的是:
1、单一的用户信息数据库并不是必须的,有许多系统不能将所有的用户信息都集中存储,应该允许用户信息放置在不同的存储中,事实上,只要统一认证系统,统一ticket的产生和校验,无论用户信息存储在什么地方,都能实现单点登录。

2、统一的认证系统并不是说只有单个的认证服务器:认证服务器之间要通过标准的通讯协议,互相交换认证信息,就能完成更高级别的单点登录。如:当用户在访问应用系统1时,由第一个认证服务器进行认证后,得到由此服务器产生的ticket。当他访问应用系统2的时候,认证服务器2能够识别此ticket是由第一个服务器产生的,通过认证服务器之间标准的通讯协议(例如SAML)来交换认证信息,仍然能够完成SSO的功能。


Web-SSO与跨域:
  • 不跨域单点登录:直接把ticket写到cookie中
  • 跨子域单点登录:把ticket写到共同的父域cookie中,这样子域应用都能读到相应的cookie
  • 跨域单点登录:用jsonp跨域访问(通过jsonp取得cas服务器保存在本地浏览器cookie中的ticket) 或者 多ticket,如下

完全跨域登录,是指A,B站点和P站点没有共同的父域,比如A站点为forum.yizhu1999.net,B站点为blog.yizhu1998.net,大家可以参考微软旗下的几个站点http://www.live.com,www.hotmail.com,这两个站点就没有共同的父域,而仍然可以共用登录,怎样才能实现呢?请参考下图,由于这种情况ticket比较复杂,我们暂时把P站点创建的的ticket叫做P-ticket,而A站点创建的ticket叫A-ticket,B的为B-ticket

由于站点A(forum.yizhu1999.com)不能读取到由站点P(passport.yizhu2000.com)创建的加密ticket,所以当用户访问A站点上需要登录才能访问的资源时,A站点会首先查看是否有A-ticket,如果没有,证明用户没有在A站点登录过,不过并不保证用户没有在B站点登录,(重复一下,既然是单点登录,当然无论你在A,B任意一个站点登录过,另外一个站点都要可以访问),请求会被重定向到p站点的验证页面,验证页面读取P-ticket,如果没有,或者解密不成功,就需要重定向登录页面,登录页面完成登录后,写一个加密cookie,也就是P-ticket,并且重定向到A站点的登录处理页,并把加密的用户信息作为参数传递给这个页面,这个页面接收登录页的用户信息,解密后也要写一个cookie,也就是A-ticket,今后用户再次访问A站点上需要登录权限才能访问的资源时,只需要检查这个A-cookie是否存在就可以了

当用户访问B站点时,会重复上面的过程,监测到没有B-ticket,就会重定向到P站点的验证页面,去检查P-ticket,如果没有,就登录,有则返回B的登录处理页面写B-ticket

注销的时候需要删除P-ticket和A-ticket

参考:
SSO单点登录解决方案[转载]
SSO
  • 大小: 14.8 KB
  • 大小: 12.2 KB
  • 大小: 19.8 KB
  • 大小: 41.8 KB
  • 大小: 35.1 KB
分享到:
评论

相关推荐

    SSO完整版跨域单点登录

    SSO(Single Sign-On)是单点登录的缩写,是一种网络用户身份验证的机制,允许用户在一次登录后,可以访问多个相互信任的应用系统,而无需再次进行身份验证。这个压缩包文件提供了SSO的完整实现,适用于跨域场景,...

    单点登录跨域iframe互相通信方案.zip

    单点登录(Single Sign-On,简称SSO)是一种身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次输入凭证。在互联网应用中,这种机制极大地提升了用户体验,同时也简化了企业的身份管理。 ...

    SSO跨域单点登录Demo

    SSO(Single Sign-On)跨域单点登录是一种网络身份验证机制,允许用户在一次登录后,可以在多个相互信任的应用系统之间自由切换,无需再次进行身份验证。这种技术广泛应用于多应用系统的集成环境中,提高了用户体验...

    跨域 SSO单点登录 DEMO

    SSO(Single Sign-On)单点登录是一种身份验证机制,允许用户在多个相互关联的应用系统中只需要登录一次,即可访问所有系统,而无需再次输入凭证。这种技术在现代企业环境中非常常见,因为它提供了便捷的用户体验并...

    SSO 单点登录(java)

    SSO(Single Sign-On)单点登录是一种身份验证机制,允许用户在一次登录后,能够访问多个相互关联的应用系统,而无需再次输入凭证。在Java环境下实现SSO,通常涉及以下几个核心知识点: 1. **原理**:SSO的核心思想...

    SSO单点登录解决方案

    SSO(Single Sign-On)单点登录是一种网络访问控制机制,允许用户在一次登录后,无需再次认证即可访问多个相互信任的应用系统。这种技术极大地提高了用户体验,减少了密码管理的复杂性,同时也为管理员提供了更高效...

    单点登陆实现(完全跨域、单点退出)

    单点登录(Single Sign-On,简称SSO)是一种在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统的技术。在这个例子中,我们基于Spring MVC、Maven、WebService和Memcached来实现一个功能完善的...

    完全跨域的单点登录 完全跨域的单点登录

    单点登录(Single Sign-On,简称SSO)是一种网络用户身份验证的机制,它允许用户在一次登录后,能够在多个相互关联的应用系统中自由切换,而无需再次输入认证信息。在Java开发环境中,实现完全跨域的单点登录是一项...

    sso单点登录demo

    SSO(Single Sign-On)单点登录是一种身份验证机制,允许用户在多个相互关联的应用系统中只需要登录一次,即可访问所有系统,而无需再次输入凭证。这个“sso单点登录demo”是一个Java实现的示例,包含了三种不同的...

    SSO解决方案大全 Single Sign-On for everyone

    SSO(Single Sign-On)是一种身份验证机制,允许用户在一个应用系统中登录后,无需再次认证即可访问其他关联的系统。这种技术对于拥有多个应用程序或网站的企业尤其有用,可以提高用户体验,减少用户记忆多套登录...

    ASP.NET跨域单点登录的实现(SSO)

    ASP.NET跨域单点登录(Single Sign-On, SSO)是一种高效的身份验证机制,它允许用户在登录一个应用系统后,无需再次输入凭证即可访问其他关联的应用系统。这种技术极大地提升了用户体验,尤其在多应用环境中的企业级...

    java跨域单点登录实现

    Java跨域单点登录(Single Sign-On,SSO)实现是一项关键的系统集成技术,它允许用户在多个应用系统中只需登录一次,就能访问所有相互信任的应用系统,无需再次进行身份验证。本项目代码着重展示了如何在Java环境中...

    统一认证单点登录系统SSO解决方案.doc

    单点登录(Single Sign-On,简称SSO)是一种网络身份认证机制,允许用户在一个系统中登录后,无需再次认证即可访问其他相互信任的系统。在企业级应用环境中,多个独立的系统常常需要集成,以便提高用户体验和管理...

    跨域点单登录源码SSO_cross_domain

    跨域点单登录源码SSO_cross_domain是一个用于实现单点登录(Single Sign-On, SSO)的项目,主要解决了用户在多个域名之间切换时无需重复登录的问题。在这个项目中,我们将探讨三个核心概念:跨域、点单登录以及SSO。...

    SSO单点登录

    SSO(Single Sign-On,单点登录)是身份管理领域的重要组成部分,它允许用户在一个应用程序中进行一次身份验证后,无需再次登录即可访问同一组织内其他受保护的应用程序资源。这一特性极大地提高了用户的便利性,...

    C#单点登陆组件源码SSO

    单点登录(Single Sign-On,简称SSO)是一种网络身份验证机制,允许用户在一个系统上登录后,无需再次验证即可访问多个相互关联的系统。在IT行业中,SSO技术广泛应用于企业级应用,提高用户体验,简化管理并增强安全...

    sso单点登录技术

    单点登录(Single Sign-On,简称SSO)是一种网络身份验证机制,允许用户在一个系统或应用中登录后,无需再次认证即可访问其他相互信任的系统或应用。这大大提升了用户体验,减少了用户记忆多个用户名和密码的负担,...

    sso单点登录最详细Demo(赋UML请求时序图)

    SSO(Single Sign-On)单点登录是一种身份验证机制,允许用户在多个相互关联的应用系统中只需要登录一次,即可访问所有系统,而无需再次输入凭证。这个Demo是基于SpringBoot框架实现的,提供了详细的实现过程和请求...

    完全跨域单点登录DEMO

    单点登录(Single Sign-On,简称SSO)是一种网络用户身份验证的机制,允许用户在一个系统或服务中登录后,无需再次认证即可访问其他相互信任的系统或服务。"完全跨域单点登录DEMO"是针对这个概念的一个具体实现示例...

    跨域访问的单点登录案例

    跨域访问的单点登录(Single Sign-On, SSO)是一种网络身份验证机制,它允许用户在一个认证域中登录后,无需再次输入凭证即可访问其他相互信任的不同域上的应用程序或服务。这种技术在多系统集成、企业级应用以及...

Global site tag (gtag.js) - Google Analytics