1、单点登录(简称SSO)是企业业务集成的流行解决方案之一。SSO的定义是,在多个应用系统中,用户只需要登录一次,就可以访问所有可信的应用系统。
(资料图片)
一、概述
2、很早期的公司,一个公司可能只有一台服务器,慢慢的服务器数量开始增加。每台服务器都要注册登录,退出的时候再一个一个退出。用户体验很差!你可以想象,
3、去豆瓣登录豆瓣FM,豆瓣阅读,豆瓣电影,豆瓣日记.真的会让人崩溃。我们想要的是另一种登录体验:一个企业下的服务只需要注册一次,登录时登录一次,退出时注销一次。怎么会?
4、一次注册。注册一次不难。想想在服务器之间同步用户信息是否足够。可以,但是这个描述并不完整,后面注册用户的时候再详细说。其实用户信息的管理才是SSO真正的难点,但是作为初学者,
5、我们的难点在于实现SSO的技术!先说实现手段。
6、一次登录和一次注销。回顾普通商场的故事,
7、保持登录状态的关键是什么?记录器(会话)?那种叫饼干的纸?写在纸上的身份证?它是会话中记录的信息和那个ID,
8、Cookie不仅仅是记录id的工具。客户端保存ID,服务器保存会话,它们一起用于保存登录状态。客户端需要使用ID作为凭证。
9、服务器需要使用session来验证ID的有效性(ID可能过期,可能根本就是伪造的,找不到对应的信息,ID下对应的客户端没有登录过等等。).
10、然而,会话最初对于每个服务器是唯一的。豆瓣FM有自己的session,豆瓣阅读有自己的session,记录ID的cookie不能跨域。所以,
11、如果我们想要登录一次,注销一次,我们只需要找到一种方法,让所有服务器共享一个会话信息,这样客户端就可以在所有域名下持有这个ID。此外,只要每个服务器获得相同的ID,
12、有一种方法可以检查ID的有效性,得到ID对应的用户信息,也就是可以检查ID。
二、实现方法
13、服务器组有两种方法来生成和验证ID:
14、“共享Cookie”就是上面提到的共享会话的方式。我觉得还是叫“共享会话”比较好。本质上,cookie只是一个存储会话id的介质。
15、Session-id也可以放在每个请求的url中。据说这条路不安全,所以我没有深究。哪位大神可以推荐一下相关资料,我以后再补。实际上,是的,
16、毕竟session的机制从一开始就是一个服务器,一个会话。把会话拿出来和所有服务器共享,真的很奇怪。
17、SSO-Token模式由于共享会话不安全,我们不再使用session-id作为身份。我们生成另一种标识,称之为SSO-Token(或Ticket)。
18、这个logo是整个服务器组唯一的,所有服务器组都可以验证这个令牌,得到令牌背后所代表的用户的信息。这就是我们要讨论的,具体流程图后面会给出。
19、单点登录有一个非常关键的步骤,与服务器验证令牌的方式无关。最早的“共享会话”方法还是现在的“令牌”方法。
20、当ID来到浏览器时,会面临这样一个问题:用户成功登录并获得token(或session-id)后,浏览器如何在其他域名下存储和共享?同一个域名很简单,在cookie中存储令牌,
21、把cookie 的路径设置成顶级域名下,这样所有子域都能读取cookie 中的token。这就是共享cookie 的方式(这才叫共享Cookie 嘛,上面那个应该叫共享session)。
22、比如:谷歌公司,google.com 是他的顶级域名,邮箱服务的mail.google.com 和地图服务的map.google.com 都是它的子域。但是,
23、跨域的时候怎么办?谷歌公司还有一个域名,youtube.com,提供视频服务。
三、企业应用集成
24、通常情况下运维内控审计系统、4A 系统都包含此项功能,目的是简化账号登录过程并保护账号和密码安全,对账号进行统一管理。
25、企业应用集成(EAI, Enterprise Application Integration)。企业应用集成可以在不同层面上进行:例如在数据存储层面上的“数据大集中”,
26、在传输层面上的“通用数据交换平台”,在应用层面上的“业务流程整合”,和用户界面上的“通用企业门户”等等。事实上,还有一个层面上的集成变得越来越重要,那就是“身份认证”的整合,也就是“单点登录”。
27、在信息安全管理中,访问控制(Access Controls)环绕四个过程:Identification;Authentication;Authorization;Accountability。
28、单点登录(Single Sign On)属于Authentication 认证系统,
29、除单点登录外还包括:Lightweight Directory Access Protocol 和Authorization ticket。
30、(Michael E. Whitman (2011) Management Of Information Security Kennesaw University)。
四、技术实现机制
31、当用户第一次访问应用系统的时候,因为还没有登录,会被
32、引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份校验,如果通过校验,应该返回给用户一个认证的凭据ticket;用户再访问别的应用的时候,就会将这个ticket 带上,
33、作为自己认证的凭据,应用系统接受到请求之后会把ticket 送到认证系统进行校验,检查ticket 的合法性。如果通过校验,用户就可以在不用再次登录的情况下访问应用系统2 和应用系统3 了。
34、要实现SSO,需要以下主要的功能:
35、所有应用系统共享一个身份认证系统。统一的认证系统是SSO 的前提之一。认证系统的主要功能是将用户的登录信息和用户信息库相比较,对用户进行登录认证;认证成功后,
36、认证系统应该生成统一的认证标志(ticket),返还给用户。另外,认证系统还应该对ticket 进行效验,判断其有效性。
37、所有应用系统能够识别和提取ticket 信息要实现SSO 的功能,让用户只登录一次,就必须让应用系统能够识别已经登录过的用户。应用系统应该能对ticket 进行识别和提取,通过与认证系统的通讯,
38、能自动判断当前用户是否登录过,从而完成单点登录的功能。
五、优点
39、1)提高用户的效率。
40、用户不再被多次登录困扰,也不需要记住多个ID 和密码。另外,用户忘记密码并求助于支持人员的情况也会减少。
41、2)提高开发人员的效率。
42、SSO 为开发人员提供了一个通用的身份验证框架。实际上,如果SSO 机制是独立的,那么开发人员就完全不需要为身份验证操心。他们可以假设,只要对应用程序的请求附带一个用户名,身份验证就已经完成了。
43、3)简化管理。
44、如果应用程序加入了单点登录协议,管理用户帐号的负担就会减轻。简化的程度取决于应用程序,因为SSO 只处理身份验证。所以,应用程序可能仍然需要设置用户的属性(比如访问特权)。
本文sso是什么的简称,SSO是什么到此分享完毕,希望对大家有所帮助。
关键词: