【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单点登 ...
随机推荐
- Istio可观测性
Istio可观测性 Istio的可观测性包括metrics,日志,分布式链路跟踪以及可视化展示.下面主要介绍如何在istio中部署基于Prometheus的metrics监控,基于jaeger的链路跟 ...
- JDK16关于TCP和UDP的优化
文章转自belaban.blogspot.com Double your performance: virtual threads (fibers) and JDK 15/16!If you use ...
- C++模板函数只能全特化不能偏特化
C++模板函数只能全特化不能偏特化
- 在CG/HLSL中访问着色器的内容
着色器在Properties代码块中声明 材质球的各种特性.如果你想要在着色器程序中使用这些特性,你需要在CG/HLSL中声明一个变量,这个变量需要与你要使用的特性拥有同样的名字和对的上号的类型.比如 ...
- Go测试开发(一) 怎么写Go代码
安装过程略过,网上搜一大把. 介绍 本文会在一个module中开发一个简单的Go package. 同时介绍go tool(也就是go命令行). 以及如何fetch,build和install Go的 ...
- leetcode刷题-94二叉树的中序遍历
题目 给定一个二叉树,返回它的中序 遍历. 实现 # def __init__(self, x): # self.val = x # self.left = None # self.right = N ...
- 字符串split的用法
拆分字符串:张三:20|李四:40|王五:40 这个可以使用两次分割,第一次使用 | 分割,放到arr数组里,然后使用循环对arr[i]进行使用:分割 public static void main( ...
- .NET委托,事件和Lambda表达式
委托 委托是什么? 委托是一种引用类型(其实就是一个类,继承MulticastDelegate特殊的类.),表示对具有特定参数列表和返回类型的方法的引用. 每个委托提供Invoke方法, BeginI ...
- django之admin配置
要在admin内显示的表,在admin中进行注册,然后在登录admin后台,才可以对表进行操作例如:from django.contrib import adminfrom app01 import ...
- axios post提交数据的三种请求方式
1.Content-Type: application/json import axios from 'axios' let data = {"code":"1234&q ...