前后端分离基于Oauth2的SSO单点登录怎样做?
一、说明 单点登录顾名思义就是在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统,免除多次登录的烦恼;本文主要介绍 跨域 间的 前后端分离 项目怎样实现单点登录,并且与 非前后端分离 的差异在那里?需要解决什么问题?。 前后端分离 的核心概念是后端仅返回前端所需的数据,不再渲染HTML页面,前端HTML页面通过AJAX调用后端的RESTFUL API接口并使用JSON数据进行交互 PS :关于 单点登录 主流的实现思路和原理请看文章《 Spring Security基于Oauth2的SSO单点登录怎样做?一个注解搞定 》 二、实现差异 跨域 间的 前后端分离 项目也是基于共享统一授权服务(UAA)的 cookie 来实现 单点登录 的,但是与 非前后分离 不一样的是存在以下问题需要解决 没有过滤器/拦截器,需要在前端判断登录状态 需要自己实现 oauth2 的 授权码模式 交互逻辑 需要解决安全性问题, oauth2 的 clientSecret 参数放在前端不安全 三、实现架构 下面是 前后端分离 项目的三个角色(前端WEB工程、后端API工程、授权中心UAA)间进行 登录 / 单点登录 时的交互逻辑架构图 跨域的单点登录原理 在《 Spring Security基于Oauth2的SSO单点登录怎样做?一个注解搞定 》中已经介绍过了这里就不展开说明了