006. SSO 单点登录(同域SSO/跨域SSO)
程序员文章站
2023-02-26 14:11:17
SSO 单点登录:一次登录,处处登录。 只需在一个登录认证服务下进行登录后,就可访问所有相互信任的应用 同域 SSO 1. session-cookie机制:服务端通过cookie认证客户端。 用户第一次登录后,服务端将返回一个cookie给客户端(这个cookie包含session id),用户下 ......
sso 单点登录:一次登录,处处登录。
只需在一个登录认证服务下进行登录后,就可访问所有相互信任的应用
-
同域 sso
1. session-cookie机制:服务端通过cookie认证客户端。
用户第一次登录后,服务端将返回一个cookie给客户端(这个cookie包含session id),用户下一次发起请求将在header带上这个cookie,服务端将能识别是哪一个客户端。
/**
* 完全同域
* cookie 是端口无关的
*/
cookie cookie = new cookie("sso","ssocookie");
cookie.setdomain("www.xxx.com"); //设置该cookie域,则在该域下的请求将带上该cookie
cookie.setpath("/"); //该域下的所有路径的请求都使用该cookie
response.addcookie(cookie);
/**
* 同父域
* cookie 是端口无关的
*/
cookie cookie = new cookie("sso","ssocookie"); cookie.setdomain(".xxx.com"); cookie.setpath("/"); response.addcookie(cookie);
2. spring-session 共享: 解决同域下 集群 session共享的问题。(当服务端为集群而不是单点的时候,需要集群服务器间session共享才能实现session-cookie机制的同域sso)
实现方式:通过过滤器拦击请求,获取session数据保存到数据库(session持久化);需要获取session数据将统一从数据库获取。
-
跨域 sso
1. session跨域: 同样是通过cookie认证客户端。
cookie共享: 将所有信任域的cookie设置为相同的值,这样在不同域下发起的请求携带的cookie将会是一样的。
/** * 同父域 * cookie 是端口无关的 */ cookie cookie = new cookie("sso","ssocookie"); cookie.setdomain(getdomainname(request)); // 将信任的域的cookie设置为相同的值,这样在不同域下登录使用的cookie将会是一样的,可以通过cookie校验 cookie.setdomain("/"); response.addcookie(cookie);
2. token身份认证
服务端不需要记录session数据,用户登录后服务端将返回一个token给客户端,客户端将这个token保存起来;在下一次请求中将在header带上该token,如果通过服务端校验,将能得到正确响应。
上一篇: PHP取整数函数常用的四种方法小结
下一篇: fgetcvs在linux的问题
推荐阅读
-
Asp.Net Core基于Cookie实现同域单点登录(SSO)
-
006. SSO 单点登录(同域SSO/跨域SSO)
-
JAVAEE——宜立方商城11:sso登录注册功能实现、通过token获得用户信息、Ajax跨域请求(jsonp)
-
sso单点登录怎么给不同域设置cookie?
-
全面解析Yii2跨域的SSO登陆逻辑
-
006. SSO 单点登录(同域SSO/跨域SSO)
-
sso单点登录怎么给不同域设置cookie?
-
进一步优化Yii2跨域的SSO登陆 丽珠门户sso sso.dinghuo123 sso
-
进一步优化Yii2跨域的SSO登陆
-
Asp.Net Core基于Cookie实现同域单点登录(SSO)