之前的文章中有介绍spring cloud sso集成的方案,也做过spring + jwt + redis的解决方案,不同系统的无缝隙集成,统一的sso单点登录界面的管理、每个应用集成的权限认证,白名单等都是我们需要考虑的,现在针对于以上的问题我们做了sso单点登录应用认证平台,设计如下:
1. 数据库设计:
DROPTABLEIFEXISTS`sso_app_apply`;CREATETABLE`sso_app_apply`(`id`varchar(200)NOTNULLCOMMENT'编号',`type`varchar(200)NOTNULLCOMMENT'所属分类',`applicant`varchar(200)NOTNULLCOMMENT'申请人',`approver`varchar(200)NOTNULLCOMMENT'审批人',`appname`varchar(200)NOTNULLCOMMENT'应用名称',`range`varchar(200)NOTNULLCOMMENT'使用范围',`token`varchar(200)NOTNULLCOMMENT'token认证码',`approval_time`datetimeNOTNULLCOMMENT'审批时间',`create_date`datetimeNOTNULLCOMMENT'创建时间',`update_by`varchar(64)NOTNULLCOMMENT'更新者',`update_date`datetimeNOTNULLCOMMENT'更新时间',`del_flag`char(1)NOTNULLDEFAULT'0'COMMENT'删除标记',`status`char(1)DEFAULT'0'COMMENT'审核状态:0(待审核) 1(审核通过) 2(驳回) 3(黑名单)', PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8COMMENT='sso应用申请表';
DROPTABLEIFEXISTS`sso_app_template`;CREATETABLE`sso_app_template`(`id`varchar(200)NOTNULLCOMMENT'编号',`a_id`varchar(200)NOTNULLCOMMENT'应用id',`t_id`varchar(200)NOTNULLCOMMENT'模板id', PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8COMMENT='sso应用模板中间表';
DROPTABLEIFEXISTS`sso_template`;CREATETABLE`sso_template`(`id`varchar(200)NOTNULLCOMMENT'编号',`name`varchar(200)NOTNULLCOMMENT'模板名称',`type`varchar(200)NOTNULLCOMMENT'模板分类',`img`varchar(200)NOTNULLCOMMENT'模板图片',`create_by`varchar(64)NOTNULLCOMMENT'创建者',`create_date`datetimeNOTNULLCOMMENT'创建时间',`update_by`varchar(64)NOTNULLCOMMENT'更新者',`update_date`datetimeNOTNULLCOMMENT'更新时间', PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8COMMENT='sso模板表';
2. 执行流程
A. 成用户注册 (可以注册个人账户或者企业账户)
B. 申请应用(可能是多个应用),选择不同的模板(不同模板对应不同行业的sso单点登录系统)
C. 管理人员进行应用审核(申请人提交信息的审核),审核通过以后通过加密方式生成应用对应的token信息
D. 后台管理(应用列表、应用审核、模板管理等)
E. 将token信息和应用信息传递,进行sso统一拦截器认证(验证白名单)
F. 成功or失败(跳转到指定模板的sso登录界面)
3. 效果界面: