前后端分离基于Oauth2的SSO单点登录怎样做?
2020-03-17 16:03:29来源:博客园 阅读 ()
前后端分离基于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单点登录怎样做?一个注解搞定》中已经介绍过了这里就不展开说明了
前端WEB工程有几个点需要注意:
- 红色线条为重定向跳转
- 前端工程可通过是否存在
access_token
判断登录状态 - 前端工程跳转UAA之前需记录用户访问的页面地址,方便登录完成后重定向回去
PS:为什么获取access_token需要请求后端API工程去完成,而不是前端WEB工程自己直接请求UAA呢?因为安全性问题!这一步需要传clientSecret参数,而通过后台来配置这个参数就不需要暴露给前端了。
?
四、完整的demo下载地址
https://gitee.com/zlt2000/microservices-platform/tree/master/zlt-demo/sso-demo/web-sso
?
扫码关注有惊喜!
原文链接:https://www.cnblogs.com/zlt2000/p/12509004.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:java 抽象类
下一篇:java 模板方法模式
- SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后 2020-06-10
- 初识Nginx——前后端发布 2020-06-03
- 基于数据库的代码自动生成工具,生成JavaBean、生成数据库文 2020-05-31
- java 在线网络考试系统源码 springboot mybaits vue.js 前后 2020-05-31
- 数据分析 | 基于智能标签,精准管理数据 2020-05-30
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash