• 【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的安全性。
  • 相关阅读:
    SQL GUID和自增列做主键的优缺点
    php 一维数组去重
    php + crontab 执行定时任务
    PHP内置函数生成随机数的方法汇总
    PHP替换回车换行的三种方法
    Yii2查询之where条件拼装
    yii2 使用阿里大鱼短信
    javascript对数据处理
    Vue 404页面处理
    vue 中view层中方法的使用
  • 原文地址:https://www.cnblogs.com/heben/p/13781692.html
Copyright © 2020-2023  润新知