共计 1194 个字符,预计需要花费 3 分钟才能阅读完成。
🎈 什么是单点登录
- 单点登录:
SSO(Single Sign On)
用户只需登录一次,就可拜访同一帐号平台下的多个利用零碎。 - 比方阿里巴巴这样的大团体,旗下有很多的服务零碎,比方天猫,淘宝,1688 等等,如果每个子系统都须要用户进行登录认证,预计用户会被烦死。
- 而
SSO
是一种对立认证和受权机制,去解决这种反复认证的逻辑,进步用户的体验。
🎈 单点登录的凭证
- 由单点登录的原理,能够看进去,最重要的就是这个通用的登录凭证
ticket
如何取得 - 而实现
ticket
多利用共享次要有三种形式: 父域加密 Cookie、用户认证核心、Localstorage
🎈 父域 Cookie 形式
- 用户在登录父利用后,服务端返回用户登录后的
cookie
,客户端将该cookie
保留到父域中 - 这个
cookie
最好通过加密解决,因为Cookie
自身并不平安 - 这种加密算法只有服务端才能够晓得,服务端的解密算法不能暴漏
- 放在父域中,次要是因为
Cookie
不能跨域实现免登,放到父域中能够解决跨域的问题 - 父域也就是
domain
要设置成主域名,而非二级域名,这样二级域名就能够应用同一个Cookie
了
// 如果某个平台有三个利用,别离是:// 门户利用:www.autofelix.com
// 商城利用:shop.autofelix.com
// 领取利用:pay.autofelix.com
document.cookie = "ticket=xxxxxx;domain=.autofelix.com;path=/
🎈 用户认证核心形式
- 应用一个认证核心,用来专门负责解决登录申请
- 用户核心不解决业务逻辑,只是解决用户信息的治理以及受权给第三方利用
- 第三方利用须要登录的时候,则把用户的登录申请转发给用户核心进行解决,用户处理完毕返回凭证,第三方利用验证凭证,通过后就登录用户。
- 流程是用户拜访利用零碎,利用零碎先检查用户是否有
Ticket
,如果没有,则阐明用户在该利用上尚未登录,跳转到用户核心,通过用户核心的Cookie
去判断用户是否在其余利用上进行了登录 - 如果认证核心发现用户尚未在其余任何利用上执行过登录,则提醒用户执行登录操作,期待用户登录后,生成
Tickcet
,并让Ticket
拼接在URL
上,重定向回利用零碎 - 当利用零碎拿到
Ticket
后,将从新向用户认证核心发动验证,避免该Ticket
是用户伪造,验证胜利后,记录用户登录状态,并将Ticket
写入到以后利用的Cookie
中 - 而当用户拜访该利用零碎时,就都会带上以后的
Ticket
,也就能失常拜访服务了
🎈 localstorage 形式
- 当用户在一个利用下登录后,前端能够通过
iframe+postMessage()
形式,将同一份Ticket
保留到多个域名下的LocalStorage
中 - 然而这种形式齐全由前端管制,后端仅仅须要将用户登录胜利后的
Ticket
返回给前端解决即可 - 这样其实也实现了,多利用下单点登录的问题,并且反对跨域
正文完