SSO 单点登录总结

SSO 单点登录总结

1、SSO 只是一个名词概念而已,具体的实现技术并不叫 SSO。

2、SSO 全称为 SingleSignOn ,单点登录。

3、SSO 是指在多个应用系统中,用户只需要登录一次系统就可以访问所有相互信任的应用系统。

1. 需求描述

需求:有一个代码商店网站,用于购买代码的。

代码商店的首页:www.codeshop.com,vip系统:vip.codeshop.com,购物车系统:cart.codeshop.com,登录系统:login.codeshop.com

要求在登录系统中登录后,在其他系统也能够实现自动登录。

1、Cookie 是在客户端(浏览器)中存储数据的工具,以键值对进行存储:key = value 。

2、浏览器向服务器发送请求时,Http请求头中每次都会携带 Cookie ,服务器可以获取到这个 Cookie,通过 key 就能获取到 value。

3、Cookie 的 Domain 设置了访问域名限制,例如:Cookie 的 Domain 设置为 .codeshop.com,浏览器当向 www.codeshop.comvip.codeshop.comcart.codeshop.com 域名发送请求时,都会携带这个 Cookie;但向 www.baidu.com 发送请求时就不会携带此 Cookie。

4、Cookie 的 Path 设置了访问 url 的限制,例如:Cookie 的 Path 设置为 /save,浏览器当向 www.codeshop.com/savevip.codeshop.com/save 发送请求时会携带这个 Cookie;但向 www.codeshop.com/delete 发送请求时就不会携带此 Cookie。

5、Cookie 的 Expires / Max-Age 设置了 Cookie 的过期时间,-1 或者 Session 表示 Cookie 存入内存,当浏览器关闭后 Cookie 就会自动过期;当设置为一个数值(单位为秒)时,表示浏览器会将这个 Cookie 将会写入硬盘,这段时间内 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 时能查到用户的权限,则成功登录系统。

posted @ 2021-09-09 17:12  Baby丿太依赖  阅读(180)  评论(0)    收藏  举报