| 关键词: 登录 单点 系统 ticket 凭证 接口 浏览器 cookie 通过 没有 |
存别的地方,可以解决没有 cookie 的场景;通过参数等方式手动带,可以避免 CSRF 攻击。 「服务端存数据 / 不存数据」
单点登录前面我们已经知道了,在同域下的客户端/服务端认证系统中,通过客户端携带凭证,维持一段时间内的登录状态。 但当我们业务线越来越多,就会有更多业务系统分散到不同域名下,就需要「一次登录,全线通用」的能力,叫做「单点登录」。 “虚假”的单点登录(主域名相同)简单的,如果业务系统都在同一主域名下,比如wenku.baidu.com tieba.baidu.com,就好办了。可以直接把 cookie domain 设置为主域名 baidu.com,百度也就是这么干的。 “真实”的单点登录(主域名不同)比如滴滴这么潮的公司,同时拥有didichuxing.com xiaojukeji.com didiglobal.com等域名,种 cookie 是完全绕不开的。 这要能实现「一次登录,全线通用」,才是真正的单点登录。 这种场景下,我们需要独立的认证服务,通常被称为 SSO。 「一次「从 A 系统引发登录,到 B 系统不用登录」的完整流程」
「完整版本:考虑浏览器的场景」 上面的过程看起来没问题,实际上很多 APP 等端上这样就够了。但在浏览器下不见得好用。 看这里: 对浏览器来说,SSO 域下返回的数据要怎么存,才能在访问 A 的时候带上?浏览器对跨域有严格限制,cookie、localStorage 等方式都是有权限制的。 这就需要也只能由 A 提供 A 域下存储凭证的能力。一般我们是这么做的: 图中我们通过颜色把浏览器当前所处的域名标记出来。注意图中灰底文字说明部分的变化。
|
| 本文出处: https://www.toutiao.com/a6989200600357552653/ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|