单点登录的核心思路是客户端存储AuthToken,服务端存储登录信息。由于客户端将AuthToken存储在Cookie中,所以要解决Cookie的跨域读写问题。
回顾Cookie的路径(path)和域(domain)
cookie路径
cookie 一般都是由于用户访问页面而被创建的,可是并不是只有在创建 cookie 的页面才可以访问这个cookie。在默认情况下,出于安全方面的考虑,只有与创建 cookie 的页面处于同一个目录或在创建cookie页面的子目录下的网页才可以访问。那么此时如果希望其父级或者整个网页都能够使用cookie,就需要进行路径的设置。
cookie域
domain表示的是cookie所在的域,默认为请求的地址,如网址为www.jb51.net/test/test.aspx,那么domain默认为www.jb51.net。而跨域访问,如域A为t1.test.com,域B为t2.test.com,那么在域A生产一个令域A和域B都能访问的cookie就要将该cookie的domain设置为.test.com;如果要在域A生产一个令域A不能访问而域B能访问的cookie就要将该cookie的domain设置为t2.test.com。
解决跨域的核心思路
1、跨域登录,通过将AuthToken传递给非主域名的站点,将AuthToken保存在当前域下的Cookie中。
2、跨域登出,调用非主域名站点的登出页面,完成设置Cookie中的AuthToken过期的操作。
注:图片来源:https://ken.io/note/sso-design-implement
跨域登录(主域名已登录)
访问业务站点时,跳转到SSO站点做登录状态校验,验证通过后,返回302重定向到非主域名的站点,将Aut

本文详细介绍了跨域单点登录(SSO)的实现原理,重点讨论了Cookie的路径和域设置,以及解决跨域登录和登出的核心思路。通过设置Cookie的domain属性,实现不同域之间的共享,从而在主域名登录后,其他子域名也能保持登录状态。同时,阐述了跨域登录和登出的具体步骤,确保用户身份的安全管理。
最低0.47元/天 解锁文章
6100

被折叠的 条评论
为什么被折叠?



