打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
006. SSO 单点登录(同域SSO/跨域SSO)

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,如果通过服务端校验,将能得到正确响应。

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
SSO单点登录三种情况的实现方式详解
微服务系统之认证管理详解
认证授权基础
彻底搞定前后端所有鉴权方案,让你不再迷惘
一、实现简单Web-SSO
说一说几种常用的登录认证方式,你用的哪种?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服