业务系统的管理后台往往数量众多,且各自需要一套用户名密码来进行登录,不方便使用。因此花了点时间研究如何实现一套单点登录系统。

众所周知,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的安全性。

最新文章

  1. phpstudy 80端口被占用,修改端口
  2. java.util.ConcurrentModificationException异常处理
  3. get([index])
  4. 【转】【DP_树形DP专辑】【9月9最新更新】【from zeroclock's blog】
  5. Linux用户组与用户组基本命令
  6. HTML 中 META的作用
  7. hibernate 数据行数统计 count(*)
  8. WordPress创建过程
  9. JS判断当前手机类型
  10. [PHP] 魔术方法__get __set __sleep __wakeup的实际使用
  11. python练习题-day18
  12. Chrome浏览器添加控件
  13. pandas的简单使用
  14. Confluence 6 隐藏人员目录
  15. pip安装django的时候提示没有这个命令
  16. 关于一个常用的CheckBox样式
  17. 计蒜客 无脑博士的试管们 【dfs】
  18. javaScript 删除确认实现方法小结
  19. from 表单多文本提交不为空
  20. 【DFS】算24点

热门文章

  1. webdriver入门之环境准备
  2. oracle 11G R2卸载说明
  3. Oracle SQL 判断某表是否存在
  4. ssh工具 (Java)
  5. boot 项目启动报Cannot datermine embedded database driver class for database type NONE
  6. upstream--负载
  7. Java的枚举简单应用
  8. path.resolve和path.join的区别
  9. hadoop和hbase高可用模式部署
  10. HBase启用压缩