sso单点登录之跨域cookie共享 (跨域缓存共享)
使用cookie的两个属性
-
domain-域
通过设置这个属性可以使多个web服务器共享cookie。domain属性的默认值是创建cookie的服务器的主机名。不能将一个cookie的域设置成服务器所在的域之外的域。
举个例子:
-
path-路径
表示创建该cookie的服务器的哪些路径下的文件有权限读取该 cookie,默认为/,就是创建该cookie的服务器的根目录。
具体实现
A机host设置如下:
127.0.0.1 sso.taotao.com
172.16.30.123 portal.taotao.com
B机host设置如下:
127.0.0.1 portal.taotao.com
172.16.30.123 sso.taotao.com
同时开启两台服务器,sso为单点登录系统,portal为门户系统,portal首页点击登录按钮,可连接到sso系统的登录模块,登录成功后,sso系统设置cookie属性如下:
token="0821A9439FE4466395A2F4086538AEB4" Cookie cookie = new Cookie("TT_TOKEN", token); cookie.setPath("/"); cookie.setDomain("taotao.com"); response.addCookie(cookie);
此时portal服务器所在机器的浏览器得到响应信息如下 :
浏览器会根据cookie的domain属性进行判断访问哪个域会携带这个cookie,因为com.taotao.portal属于taotao.com的子域,所以在这个浏览器上访问portal.taotao.com服务器下的所有路径都会携带这个cookie 。