单点登录,同域名下有和非同域名下的登录
1.在同域名包含子域名的情況下
可以使用spring-session自定义 CookieSerializer
@Bean
public CookieSerializer getCookieSerializer() {
DefaultCookieSerializer defaultCookieSerializer = new DefaultCookieSerializer();
defaultCookieSerializer.setCookieName("sharesession");
defaultCookieSerializer.setDomainName("mall.com");
return defaultCookieSerializer;
}
将cookie defaultCookieSerializer.setDomainName("mall.com");
设置到父域名下,即可共享token即用户信息,实现单点登录
2.在不用的域名情况下
可以借助单点服务器实现单点登录,如下图:
图中cliena,clientb分别模拟两个不同域名的两个系统,ssoserver是模拟单点登录服务器
其中最关键的步骤:
1.当客户端(clienta或者clientb)让浏览器重定向到单点登录服务器时,要带自己的地址(http://clientb.com:8882/b)作为回调。
2.当客户端登录成功后要将通过token获取到的用户信息放入到sessiond即客户端内存中。
3.在用户第一次登录系统时要将用户的身份信息token存入到cookie中,当用户使用同一个浏览器登录第二个系统时会将cookie信息带入到单点登录服务器,服务器进行校验,如果携带了token,就认为用户已经登录,无需再次登录。