单点登录的原理
一、单点登录的概念1、什么是单点登陆单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 2、单点登录的引入较大的企业内部,一般都有很多的业务支持系统为其提供相应的管理和IT服 务。 如果举例说国内一著名的IT公司(名字隐去),内部共有60多个业务系统,这些系统包括两个不同版本的SAP的ERP系统,12个不同类型和版本的数据库系统,8个不同类型和版本的操作系统,以及使用了3种不同的防火墙技术,还有数十种互相不能兼容的协议和标准,这种情况其实非常普遍。每一个应用系统在运行了数年以后,都会成为不可替换的企业IT架构的一部分,如下图所示。 随 着企业的发展,业务系统的数量在不断的增加,老的系统却不能轻易的替换,这会带来很多的开销。其一是管理上的开销,需要维护的系统越来越多。 很多系统的数 据是相互冗余和重复的,数据的不一致性会给管理工作带来很大的压力。 业务和业务之间的相关性也越来越大,例如公司的计费系统和财务系统,财务系统和人事系 统之间都不可避免的有着密切的关系。 为了降低管理的消耗,最大限度的重用已有投资的系统,很多企业都在进行着企业应用集成(EAI)。 企业应用集成可以在不同层面上进行: 3、单点登录带来的好处使用“单点登录”整合后,只需要登录一次就可以进入多个系统,而不需要重新登录,这不仅仅带来了更好的用户体验,更重要的是降低了安全的风险和管理的消耗。请看下面的统计数据: 二、单点登录的运行原理1、一个简单的运行机制单点登录的机制其实是比较简单的,用一个现实中的例子做比较。 单点登录的机制也一样,如下图所示 当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录(1); 根据用户提供的登录信息,认证系统进行身份效验,如果通过效验,应该返回给用户一个认证的凭据--ticket(2); 用户再访问别的应用的时候(3,5)就会将这个ticket带上,作为自己认证的凭据,应用系统接受到请求之后会把ticket送到认证系统进行效验,检查ticket的合法性(4,6)。 如果通过效验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。 2、稍微复杂一点的运行机制从上面的视图可以看出,要实现SSO,需要以下主要的功能: 所有应用系统共享一个身份认证系统。统一的认证系统是SSO的前提之一。认证系统的主要功能是将用户的登录信息和用户信息库相比较,对用户进行登录认证;认证成功后,认证系统应该生成统一的认证标志(ticket),返还给用户。 上面的功能只是一个非常简单的SSO架构,在现实情况下的SSO有着更加复杂的结构。有两点需要指出的是: 单一的用户信息数据库并不是必须的,有许多系统不能将所有的用户信息都集中存储,应该允许用户信息放置在不同的存储中。事实上,只要统一认证系统,统一ticket的产生和校验,无论用户信息存储在什么地方,都能实现单点登录。 统一的认证系统并不是说只有单个的认证服务器,如下图所示,整个系统可以存在两个以上的认证服务器,这些服务器甚至可以是不同的产品。认证服务器之间要通过标准的通讯协议,互相交换认证信息,就能完成更高级别的单点登录。如下图,当用户在访问应用系统1时,由第一个认证服务器进行认证后,得到由此服务器产生的ticket。当他访问应用系统4的时候,认证服务器2能够识别此ticket是由第一个服务器产生的,通过认证服务器之间标准的通讯协议(例如SAML)来交换认证信息,仍然能够完成SSO的功能。 3、web-sso随着互联网的高速发展,WEB应用几乎统治了绝大部分的软件应用系统,因此WEB-SSO是SSO应用当中最流行的。 为什么说WEB-SSO比较容易实现呢?这是有WEB应用自身的特点决定的。 但是我们通常的应用是有状态的。先不提不同应用之间的SSO,在同一个应用中也需要保存用户的登录身份信息。 例如用户在访问页面1的时候进行了登录,当客户再次访问页面2的时候,如何才能告诉Web服务器,客户刚才已经登录过了呢? 浏览器和服务器之间有约定:通过使用cookie技术来维护应用的状态。Cookie是可以被Web服务器设置的字符串,并且可以保存在浏览器中。 如下图所示,当浏览器访问了页面1时,web服务器设置了一个cookie,并将这个cookie和页面1一起返回给浏览器,浏览器接到cookie之后,就会保存起来, 在它访问页面2的时候会把这个cookie也带上,Web服务器接到请求时也能读出cookie的值,根据cookie值的内容就可以判断和恢复一些用户的信息状态。 Web-SSO完全可以利用Cookie来完成用户登录信息的保存,将浏览器中的Cookie和上文中的Ticket结合起来,完成SSO的功能。 为了完成一个简单的SSO的功能,需要两个部分的合作: ps这篇是我在网上看到的,觉得写得很好,转过来存着,怕找不到,原文链接:https://www.cnblogs.com/lexiaofei/p/7172214.html (编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |