【SSO】一个简单的单点登录演示实现
业务系统的管理后台往往数量众多,且各自需要一套用户名密码来进行登录,不方便使用。因此花了点时间研究如何实现一套单点登录系统。
众所周知,SSO系统设计中,往往需要想办法解决cookie不能跨域的问题,因此本系统要求各个需要接入SSO的业务系统,也进行cookie写入。整体工作流程如下:

实际上在实现的时候,为了代码逻辑更加清晰易于维护,SSO本身做了前后端分离。
该项目基于springboot,前端使用了vue,后端端口9999,前端端口8080
https://github.com/scaventz/x-sso
如果你对该项目感兴趣,并且进行了clone,为了能跑起来,你需要做如下工作:
- 在host文件中配置 127.0.0.1 sso.bot.com,127.0.0.1 alert.bot.com
- 在localhost安装并启动redis,端口保持默认6379
- 项目根路径下的doc文件夹下,有mysql的建表语句
- 为了前端能跑起来,需要在sso-front-vue 目录下执行 npm install 安装相关依赖,然后再执行 npm run serve 进行启动,启动后访问 sso.bot.com:8080 即可
也做了一个用于模拟业务系统的demo,地址如下,访问端口为8888,该项目跑起来后,访问项目根路径会看到两个登录按钮,一个普通的登录,和一个用于跳转到SSO登录的按钮,由于demo的目的是测试SSO能否正常工作,因此demo中未对普通登录进行实现
https://github.com/scaventz/x-sso-client-demo
要完成一套堪用的SSO,还有许多需要做的工作是本项目没有完成的,比如以下两个非常重要的点
- 简单的系统接入方式,比如对Spring技术栈的客户端可以考虑直接提供依赖包
- 针对不同的客户端系统,只有前端的,只有后端的,前后端都有的,安全性要求高的,安全性要求不高的,提供不同的接入方式。本项目目前只演示了SSO返回token直接跳转的方式,安全性不高,实际上更安全的方式,为SSO验密成功,生成授权码,跳转会业务系统前端,业务系统前端将授权码给到业务系统后端,其后端再通过这个授权码拿到真正的token。这中间当然还需要考虑,是否为了安全性,需要引入非对称加密算法来进一步保证token的安全性。
【SSO】一个简单的单点登录演示实现的更多相关文章
- 搭建CAS服务器,并实现一个简单的单点登录的demo
官网:http://jasig.github.io/cas/Cas Server下载:http://developer.jasig.org/cas/Cas Client下载:http://develo ...
- 一个简单的PHP登录演示(SESSION版 与 COOKIE版)
//==============COOKIE版本的简单登录================ if ($_GET[out]){ setcookie('id',''); setcookie('pw','' ...
- PHP简单实现单点登录功能示例
1.准备两个虚拟域名 127.0.0.1 www.openpoor.com127.0.0.1 www.myspace.com 2.在openpoor的根目录下创建以下文件 index.PHP 1 ...
- java实现简单的单点登录
java实现简单的单点登录 摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中.本文从业务的角度分析了单点登录的需求和应用领域:从技术本身的角度分析了单点登录技术的内部机制和实现 ...
- Node.js基于Express框架搭建一个简单的注册登录Web功能
这个小应用使用到了node.js bootstrap express 以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注 ...
- 程序猿修仙之路--数据结构之你是否真的懂数组? c#socket TCP同步网络通信 用lambda表达式树替代反射 ASP.NET MVC如何做一个简单的非法登录拦截
程序猿修仙之路--数据结构之你是否真的懂数组? 数据结构 但凡IT江湖侠士,算法与数据结构为必修之课.早有前辈已经明确指出:程序=算法+数据结构 .要想在之后的江湖历练中通关,数据结构必不可少. ...
- 点单登录原理和java实现简单的单点登录
引用自:http://blog.csdn.net/zuoluoboy/article/details/12851725 摘要: 单点登录(SSO)的技术被越来越广泛地应用到各个领域的软件系统当中.本文 ...
- java实现简单的单点登录_转
摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中.本文从业务的角度分析了单点登录的需求和应用领域:从技术本身的角度分析了单点登录技术的内部机制和实现手段,并且给出Web-SSO ...
- SSO 基于CAS实现单点登录 实例解析(二)
本文目录: 概述 演示环境 部署CAS-Server相关的Tomcat 部署CAS-Client相关的Tomcat 测试验证SSO 第一: 本demo在一个机器上实现(三个虚拟主机),来看SSO单点登 ...
随机推荐
- Java 获取一段时间内的每一天
有时候我们会遇到一些业务场景,需要去获取一段时间内的每一天日期 public static List<Date> findDates(Date dBegin, Date dEnd) { L ...
- 攻防世界——web新手练习区解题总结<3>(9-12题)
第九题simple_php: 看题目说是php代码,那必定要用到php的知识,让我们先获取在线场景,得到如下网页 仔细看这个代码,意思大概是: 1.当a==0且a为真时输出flag1 2.当b为数字退 ...
- 为什么建议软件测试自学而不推荐去IT培训机构?浅谈IT培训机构存在的意义
原文地址:https://www.jianshu.com/p/447c65654e84 哥们别太天真啦,知乎上那些到处以大神自居,说培训机构各种神坑不靠谱的,绝对是无利不起早的,很多都是借着贬低别人来 ...
- pyqt 设置QTabWidget标签页不可选
pyqt 设置QTabWidget标签页不可选 for i in range(1,7): self.tabWidget.setTabEnabled(i,False)i-对应标签页的位数
- JVM学习第二天(垃圾回收器和内存分配策略)大章
说道垃圾回收器大家应该都会有所了解,GC白,当然说道具体的可能就不是很清楚了,今天我们就来玩一玩; GC要做的事情: 第一步:确定堆中需要回收的对象; 第二步:什么时候回收; 第三步:怎样回收 为什么 ...
- Oracle快速建表Sample
表定义: create table tb_triple( id number(8,0) primary key, name nvarchar2(20), birthday date ) 充值: ins ...
- jzoj 6797. 【2014广州市选day2】hanoi
Description 你对经典的hanoi塔问题一定已经很熟悉了.有三根柱子,n个大小不一的圆盘,要求大盘不能压在小盘上,初始时n个圆盘都在第一根柱子上,最少要多少步才能挪到最后一根柱子上? 现在我 ...
- conda和pip重新配置源
conda设置源之后出现了问题,报错condaHTTPError: 之前按照网上的一些教程设置了清华源之后,过了一段时间,今天来装新的库时报了以上错误,特此记录一下. conda 源重新设置 重新去清 ...
- get、post请求方式区别
1.get请求只有请求头,没有请求体,它的参数只能写在url里面,post请求数据放在请求体里面 (HTTP协议:两台电脑交互url请求头Request Headers:一些额外的信息,比如用的什么浏 ...
- Druid连接池配置全攻略
Druid是阿里开源出来的数据库连接池,性能非常好,还自带日志监控. 它的DataSource类为:com.alibaba.druid.pool.DruidDataSource. 由于使用的yaml格 ...