You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
# 东师理想统一认证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校验机制等。