当前位置: 代码迷 >> 综合 >> 基于Spring Security + OAuth2 的SSO单点登录整合时所遇到的跨域问题分析
  详细解决方案

基于Spring Security + OAuth2 的SSO单点登录整合时所遇到的跨域问题分析

热度:35   发布时间:2023-10-25 17:15:37.0

基础环境

  1. 服务端(认证中心,前后端可分离,可不分离) + 客户端
  2. 技术架构:spring-security + oauth2

博客详见:单点登录客户端,单点登录服务端

问题描述

  1. 客户端前后端分离,访问客户端前端将直接出现跨域请求,客户端后端添加跨域请求头也没用。
  2. 客户端前后端不分离,将能够直接访问到客户端前端,但是客户端session失效后,继续浏览仍会出现跨域,自动跳转认证中心提供的登录页面失败。
原因分析:

1.前后端分离后,只要是分开部署,就会有跨域存在,一般会在后端通过cors的方式来处理,理论上应该没有问题,但是,由于我们是SSO,因此前端第一次访问后端时,客户端后端检测到未登录,会重定向到认证中心登录,错误就出在这里,通过cors处理后的跨域请求不能够再被重定向。因此解决方案就是:前后端部署在一起,只要客户端前端访问客户端后端不跨域就没问题。(详情:点击此处)
2. 关于第二点,目前仍不清楚具体原因,不过一个可行的解决方案就是,前端检测到跨域请求时,就跳转到登录页面(也可以直接调用客户端的退出,退出后也会到认证中心退出,然后认证中心会跳转到登录页面,这种方式最好,也是目前我们采用的)。

  相关解决方案