美文网首页
跨域单点登录解决方案

跨域单点登录解决方案

作者: 光剑书架上的书 | 来源:发表于2020-10-10 10:23 被阅读0次

单点登录有两种模型,一种是共同父域下的单点登录(例如域名都是 xx.a.com),还有就是完全跨域下的单点登录(例如域名是xx.a.com,xx.b.com),本文我们讲一下完全跨域下的单点登录该怎么实现。

基于安全考虑,想通过cookie来实现这个功能是不太可能的了(也许有其他黑科技可以实现,这里不做讨论)。这里介绍的方案是参考shiro框架的跨域session共享方案来实现的。我们知道浏览器访问系统的时候会生成一个session,那么每次请求如何知道是来自同一个浏览器呢?是因为浏览器为每个域存储了一个可以称作为session的cookie的东西,每次请求该域都会把对应的这个cookie带上,然后服务器根据这个cookie值去查找对应的session。

想要达到完全跨域的单点登录要满足两个条件:

首先要让session可以被所有系统都访问到。

其次要让同一个浏览器下的想要实现跨域的所有系统都使用同一个session。

第一个条件通过使用spring-session框架把session存储在redis中,可以很容易实现。

那么第二个条件如何实现呢?答案就是想方法为每个域设置相同的session的cookie 。

举个例子,比如有a、b两个站点域名分别是www.a.com,www.b.com,这两个域名需要共享session,并且已b域名下的session为主,a登录时跳转到b域进行登录,成功登录之后重定向到a时把sessionid带上,a站点拿到sessionid之后回写到浏览器覆盖原来生成的session的cookie。这时再次访问a站点用的就是同一个session了。大概画一个图如下:

上述方案可以实现完全跨域下的单点登录,但是存在一个很大的问题,就是安全问题!

假如在第④步操作重定向回a站点时,请求链接被不法分子拦截到了,他拿着这个链接就可以直接访问a站点了。

安全问题解决方案如下图:

其实⑥、⑦两步主要要解决的问题是,向b(认证服务器)证明:“我请求认证我是合法请求,我不是非法请求”。认证成功后,返回sessionId。

相关文章

  • 跨域单点登录解决方案

    单点登录有两种模型,一种是共同父域下的单点登录(例如域名都是 xx.a.com),还有就是完全跨域下的单点登录(例...

  • JWT

    JWT 全称是 JSON Web Token,是目前非常流行的跨域认证解决方案,在单点登录场景中经常使用到。 有些...

  • Oauth2.0实现跨主域单点登录方案

    1、说明 此案例基于Oauth2.0+Spring 实现跨域单点登录; 系统说明: auth.com -- 认证中...

  • CORS实现跨域SSO单点登录

    前一段时间看过CAS实现跨域单点登录SSO的方案,觉得比较复杂,想到如果有了CORS是不是可以直接使用跨域ajax...

  • 【知识】JWT数据格式及实现单点登录原理

    1. 摘要 本文讲解JWT(JSON Web Token )的定义,机制,格式和在跨域多网站单点登录中的应用。 2...

  • Web前后端跨域问题处理

    跨域问题有前台跨域(iframe间)和后台跨域。 前台跨域的解决方案可以采用跨域文档通讯(Cross domain...

  • 跨域问题,解决方案

    跨域问题,解决方案 - Nginx反向代理跨域问题,解决方案 - CORS方案此为原作者的链接:跨域问题,解决之道

  • 前端如何解决常见跨域问题

    跨域解决方案 1、 通过jsonp跨域 2、 document.domain + iframe跨域 3、 loca...

  • 开发环境跨域和生产环境跨域

    开发环境跨域 前后端分离,IP地址不同,请求数据必然导致跨域问题;解决方案:proxy设置 生产环境跨域 解决方案...

  • 浏览器跨域及其解决方案

    title: 浏览器跨域及其解决方案author: Maydate: 20220428 什么是跨域跨域的表现解决跨...

网友评论

      本文标题:跨域单点登录解决方案

      本文链接:https://www.haomeiwen.com/subject/ifpdpktx.html