单点登录的核心思路是客户端存储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过期的操作。
注:图片来源&