单点登录,多点登录的原理

一、简单例子
在讲单点登录之前,我们讲一些客户端是如何跟服务器交互的。举微信为例子,我们手机登录了微信,此时服务器就会返回一把钥匙(token)给APP,这把钥匙就是证明我是谁?例如我是Candy,每次都拿这把钥匙去请求服务器,例如获取Candy的朋友圈数据,Candy的微信好友列表等,当我们退出登录的时候,我们会告诉微信说钥匙过期啦。

好,这里我们要记住,登录微信,获取微信给我们的钥匙,用钥匙去拿对应数据。当我们退出微信的时候,我们会告诉微信说钥匙

二、概念讲解
进入主题,单点登录SSO,英文是Single Sign On。那什么是单点登录呢?
你有两个手机,一个登陆了微信,另一个只要点击登录微信,前一个手机就会推出微信,这个就是单点登录。
那多点登录呢?你想想你的iPad,或者是电脑,是不是都可以同时登陆微信?这个就是多点登录,
那他的原理是什么?还是那把钥匙,只是微信给了他们iPad跟手机一把强关联的钥匙,手机也好,iPad也好,都可以用这把钥匙,拿到他们对应的数据。

三、思维拓展
例子:为什么说是强关联呢?还是举微信手机的例子,
1、从主次来讲,我们先区分手机,电脑,iPad的钥匙主次,当电脑登录微信的时候,手机能否把电脑的微信退出?答案是可以。我们手机可以控制电脑的微信锁定,甚至是退出。这里的钥匙主次是以手机为主,但这不是唯一的答案,这是产品设计的,只要产品愿意,程序员也是可以把电脑的主权上升的,电脑也可以让手机退出,关键在于电脑登录微信是通过手机扫码的,所以手机的钥匙肯定是占据主动的,这样比较符合产品设计。
2、还是刚刚那样的例子,手机A已经登录了微信,甚至也登录了电脑微信,此时手机B登录微信,会怎么样?手机A会退出微信,同时手机A登录的电脑微信也会退出。为什么?这就是那把钥匙被退出的原因。

例子:那为什么有些APP他们可以同时在多个手机上面使用啊,他们不符合单点登录,但又和微信的多点登录冲突啊。
这里还是那把钥匙的问题,因为他们的程序设计,都是给了同一把钥匙,手机A用账号密码登录后,给了钥匙A,手机B用账号密码登录后,服务器还是给了钥匙A,他们都用钥匙A去服务器拿数据,都是可以的。那什么时候钥匙会失效呢?一个是服务器设置了过期时间,一个是其中有一个手机,点了退出按钮,服务器把这把钥匙设置为失效!

总结一下这节课,这节课最重要的概念是,手机登录,服务器给钥匙,这把钥匙就是证明你是谁,每次访问服务器,都会根据这把钥匙是谁,而给出对应的数据,如candy的朋友圈,candy的好友列表等。

四、程序优化,架构优化。
关于架构优化的知识点。
举个例子,某电商公司A收购了物流公司B,我们用户在电商APP登录的时候,需要先登录电商系统A,获得了电商钥匙A,然后用电商钥匙A,去物流系统B拿物流钥匙B,这一步用了两个步骤,那当出现系统3,系统4的时候,我们的步骤会非常的多,所以我们可以在多个服务中建立SSO系统(单点登录系统),所有系统,电商系统A,物流系统B,房地产系统C…全都去那里登录,统一一把钥匙访问所有功能系统。

你可能感兴趣的:(单点登录,多点登录的原理)