SSO 单点登录总结
SSO 单点登录总结
1、SSO 只是一个名词概念而已,具体的实现技术并不叫 SSO。
2、SSO 全称为 SingleSignOn ,单点登录。
3、SSO 是指在多个应用系统中,用户只需要登录一次系统就可以访问所有相互信任的应用系统。
1. 需求描述
需求:有一个代码商店网站,用于购买代码的。
代码商店的首页:www.codeshop.com,vip系统:vip.codeshop.com,购物车系统:cart.codeshop.com,登录系统:login.codeshop.com,
要求在登录系统中登录后,在其他系统也能够实现自动登录。
2. cookie 介绍

1、Cookie 是在客户端(浏览器)中存储数据的工具,以键值对进行存储:key = value 。
2、浏览器向服务器发送请求时,Http请求头中每次都会携带 Cookie ,服务器可以获取到这个 Cookie,通过 key 就能获取到 value。
3、Cookie 的 Domain 设置了访问域名限制,例如:Cookie 的 Domain 设置为 .codeshop.com,浏览器当向 www.codeshop.com、vip.codeshop.com、cart.codeshop.com 域名发送请求时,都会携带这个 Cookie;但向 www.baidu.com 发送请求时就不会携带此 Cookie。
4、Cookie 的 Path 设置了访问 url 的限制,例如:Cookie 的 Path 设置为 /save,浏览器当向 www.codeshop.com/save、vip.codeshop.com/save 发送请求时会携带这个 Cookie;但向 www.codeshop.com/delete 发送请求时就不会携带此 Cookie。
5、Cookie 的 Expires / Max-Age 设置了 Cookie 的过期时间,-1 或者 Session 表示 Cookie 存入内存,当浏览器关闭后 Cookie 就会自动过期;当设置为一个数值(单位为秒)时,表示浏览器会将这个 Cookie 将会写入硬盘,这段时间内 Cookie 都有效。
3. 通过 cookie 实现单点登录思路
1、在其中一个系统中点击登录,跳转到登录界面。
2、登录成功后会向浏览器写入一个 Cookie,Cookie 中保存了用户的 id(可以用 Jwt 生成一个 token,token 中保存了用户的 id)。
注意:Cookie 的 Domain 要设置为所有系统相同的域,这样浏览器访问服务器时,所有系统的服务器才能接收到这个 Cookie。
3、用户成功登录之后,将用户的 id 存入 redis 当 key,用户的权限或者角色信息存入 redis 当 value。
4、在其他系统向服务器发起请求时,也会携带这个 Cookie。
5、服务器根据 Cookie 中的 Value 获取到用户的 id( Jwt 对 token 进行解密,获取到用户 id),根据 id 查找 redis 获取用户的权限。
6、如果根据 id 查 redis 时查不到,说明用户登录过期了或者 Cookie 中的用户 id 信息不正确。
7、如果根据 id 查 redis 时能查到用户的权限,则成功登录系统。

浙公网安备 33010602011771号