|
3 years ago | |
---|---|---|
.. | ||
Config | 4 years ago | |
Const | 5 years ago | |
Controller | 4 years ago | |
Dao | 5 years ago | |
Handler | 5 years ago | |
Middleware | 4 years ago | |
Model | 5 years ago | |
Service | 5 years ago | |
Shell | 5 years ago | |
Templates | 5 years ago | |
Test | 5 years ago | |
Tools | 5 years ago | |
Utils | 4 years ago | |
docs | 5 years ago | |
models | 5 years ago | |
static | 5 years ago | |
static_React | 5 years ago | |
接入示例 | 4 years ago | |
README.md | 5 years ago | |
autologin.html | 5 years ago | |
dsSso.exe | 4 years ago | |
go.mod | 3 years ago | |
go.sum | 3 years ago | |
main.go | 4 years ago | |
一键发布.cmd | 5 years ago | |
升级Gin.txt | 4 years ago |
README.md
东师理想统一认证2.0
介绍
参考SSO的基本原理自主研发而成,主要的目标是:自主研发,原理清晰,可以按要求随意修改。
软件架构
软件架构说明
第三方系统的接入流程
对于第三方系统的接入要求:
1、实现dologout接口,并将地址记录到 sso server的数据库中。
2、在接收到 sso server的会话ID鉴权通过信息后,记录此ds_sso_sessionid到第三方自己的redis或ehcache中.设置存活时间为24小时。
示例:
base_ds_sso_sessionid
base:系统的简称,之所以这样做,不是直接使用ds_sso_sessionid做为key,是因为有些系统是使用同一个redis的,如果同时接入统一认证,
会造成些 key的冲突,建议采用系统前缀方式进行定义key值。
3、第三方系统需要对cookie中的identity_id,person_id,person_name,ds_sso_sessionid进行统一的token计算,此 token应该是一个使用
密码加密后生成的一个票据值,当然,这是第三方系统自已的管理逻辑,不属于接入统一认证才产生的概念。这是防止用户使用技术手段对系统使用
的信息进行恶意修改而采用的,具体的方法参考下面的示例。
示例:Java AES加解密(Java)
https://www.jianshu.com/p/ee3487daca34
golang的AES加密和解密的三种模式实现(CBC/ECB/CFB)
https://blog.csdn.net/evkj2013/article/details/104061752
4、每个请求进行时,第三方系统进行拦截,判断cookie中的ds_sso_sessionid是否存在,不存在则踢到统一认证中心。
存在的话,需要与自己本地的redis或ehcache中数据进行检查是不是存在,存在则放行,不存在则踢到统一认证中心。
5、dologout接口的内容实现:清除redis 或者 encache中相关的session_id.
TODO
1、对接入的系统名单进行管理和限制,未经授权的系统不允许使用此统一认证。
2、对于退出方法进行扩展,采用Httpclient办法对客户端的退出接口进行调用。
3、扩展微信扫码登录。
4、扩展QQ第三方认证登录。
5、扩展手机号登录。(需要对手机号进行验证码确认,并检查手机号是不是已存在。)
6、扩展邮箱登录。(需要对邮箱进行验证链接确认,并检查邮箱是不是已存在。)
7、SpringBoot的接入示例,JFinal的接入示例,Golang+Gin的接入示例。包括推荐在客户端完成的Cookie校验机制等。