单点登录是什么意思(单点登录cas原理)
单点登录SSO是指在多个应用系统中,用户只需登录一次即可访问所有可信的应用系统,是企业业务集成的解决方案之一。其优点是:1。提高用户效率;2.提高开发者的效率;3.简化管理。
很早的公司,一个公司可能只有一台服务器,但慢慢地服务器的数量开始增加。每个服务器都要注册和登录,退出的时候也要一个一个退出。用户体验很差!可以想象,你去豆瓣,要登陆豆瓣FM,豆瓣阅读,豆瓣电影,豆瓣日记...这真的会让人崩溃。我们想要另一种登录体验:一个企业下的服务只需要注册一次,登录一次就可以登录,注销一次就可以注销。怎么做?
一次注册。一次性注册并不难。考虑是否只需要在服务器之间同步用户信息。是的,但是这个描述不完整。我们以后注册用户的时候再详细说。其实用户信息的管理才是SSO真正的难点,但作为初学者,我们的难点在于实现SSO的技术!先讨论一下实现的手段。
一次登录一次退出。回顾普通商场的故事,保持登录状态的关键是什么?录音机(会话)?那种叫饼干的纸?纸上写的ID?是会话中记录的信息和那个ID。cookie不仅仅是记录身份的工具。客户端持有ID,服务器持有会话,两者一起用来保持登录状态。客户端需要ID作为凭证,而服务器需要会话来验证ID的有效性(ID可能过期,也可能是简单的伪造,找不到对应的信息,ID下对应的客户端没有进行登录验证等。).但是,会话最初对每台服务器都是唯一的。豆瓣FM有自己的会话,豆瓣阅读有自己的会话,记录ID的cookie不能跨域。所以,如果我们想一次登录一次注销,只需要想办法让每个服务器共享一个会话信息,这样客户端就可以在每个域名下保存这个ID。再者,每台服务器只要得到相同的id,就有办法检查ID的有效性,得到ID对应的用户信息,也就是可以检查ID;
单点登录的实现方法
服务器端
有两种方法可以按服务器组生成和验证标识:
“共享Cookie”是上面提到的共享会话的方式。我觉得还是叫“分享会”比较好。本质上,cookie只是存储会话id的媒介,会话id也可以放在每个请求的url中。据说这种方式不安全,所以没有去仔细研究。哪位大神可以推荐一下相关资料,我以后再补。其实是。毕竟会话机制是从一个服务器一个会话开始的,所以把会话拿出来让所有服务器共享有点奇怪。
在单点登录模式下,由于共享会话的模式不安全,我们不再使用会话标识作为身份标识符。此外,我们生成一个标识符,名为单点登录令牌(或票证)。该标识符对于整个服务器组是唯一的,所有服务器组都可以验证该令牌,并获得令牌背后的用户信息。这也是我们要讨论的方式,具体流程图后面会有介绍。
浏览器端
单点登录还有一个非常关键的步骤,与服务器端验证令牌的方式无关。在最早的“共享会话”方式或目前的“令牌”方式中,浏览器端面临这样一个问题:用户成功登录后,浏览器如何存储和共享令牌(或会话-id)?同一个域名很简单。将令牌存储在cookie中,并将cookie的路径设置在顶级域名下,这样所有的子域都可以读取cookie中的令牌。这是共享cookie的方式(这个叫共享cookie,但是上面这个应该叫共享会话)。比如谷歌公司,它的顶级域名是google.com,它的子域是邮箱服务的mail.google.com和地图服务的map.google.com。但是,跨域怎么办?谷歌还有一个域名,youtube.com,提供视频服务。
推荐教程:PHP