Spring+ Spring cloud + SSO单点登录应用认证

之前的文章中有介绍spring cloud sso集成的方案,也做过spring + jwt + redis的解决方案,不同系统的无缝隙集成,统一的sso单点登录界面的管理、每个应用集成的权限认证,白名单等都是我们需要考虑的,现在针对于以上的问题我们做了sso单点登录应用认证平台,设计如下:

1. 数据库设计:

Java代码







DROP TABLE IF EXISTS `sso_app_apply`;

CREATE TABLE `sso_app_apply` (

`id` varchar(200) NOT NULL COMMENT'编号',

`type` varchar(200) NOT NULL COMMENT'所属分类',

`applicant` varchar(200) NOT NULL COMMENT'申请人',

`approver` varchar(200) NOT NULL COMMENT'审批人',

`appname` varchar(200) NOT NULL COMMENT'应用名称',

`range` varchar(200) NOT NULL COMMENT'使用范围',

`token` varchar(200) NOT NULL COMMENT'token认证码',

`approval_time` datetime NOT NULL COMMENT'审批时间',

`create_date` datetime NOT NULL COMMENT'创建时间',

`update_by` varchar(64) NOT NULL COMMENT'更新者',

`update_date` datetime NOT NULL COMMENT'更新时间',

`del_flag`char(1) NOT NULL DEFAULT'0'COMMENT'删除标记',

`status`char(1) DEFAULT'0'COMMENT'审核状态:0(待审核) 1(审核通过) 2(驳回) 3(黑名单)',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='sso应用申请表';

[java]view plaincopyprint?

DROP TABLE IF EXISTS `sso_app_apply`;

CREATE TABLE `sso_app_apply` (

`id` varchar(200) NOT NULL COMMENT'编号',

`type` varchar(200) NOT NULL COMMENT'所属分类',

`applicant` varchar(200) NOT NULL COMMENT'申请人',

`approver` varchar(200) NOT NULL COMMENT'审批人',

`appname` varchar(200) NOT NULL COMMENT'应用名称',

`range` varchar(200) NOT NULL COMMENT'使用范围',

`token` varchar(200) NOT NULL COMMENT'token认证码',

`approval_time` datetime NOT NULL COMMENT'审批时间',

`create_date` datetime NOT NULL COMMENT'创建时间',

`update_by` varchar(64) NOT NULL COMMENT'更新者',

`update_date` datetime NOT NULL COMMENT'更新时间',

`del_flag`char(1) NOT NULL DEFAULT'0'COMMENT'删除标记',

`status`char(1) DEFAULT'0'COMMENT'审核状态:0(待审核) 1(审核通过) 2(驳回) 3(黑名单)',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='sso应用申请表';

DROP TABLE IF EXISTS `sso_app_apply`;

CREATE TABLE `sso_app_apply` (

`id` varchar(200) NOT NULL COMMENT '编号',

`type` varchar(200) NOT NULL COMMENT '所属分类',

`applicant` varchar(200) NOT NULL COMMENT '申请人',

`approver` varchar(200) NOT NULL COMMENT '审批人',

`appname` varchar(200) NOT NULL COMMENT '应用名称',

`range` varchar(200) NOT NULL COMMENT '使用范围',

`token` varchar(200) NOT NULL COMMENT 'token认证码',

`approval_time` datetime NOT NULL COMMENT '审批时间',

`create_date` datetime NOT NULL COMMENT '创建时间',

`update_by` varchar(64) NOT NULL COMMENT '更新者',

`update_date` datetime NOT NULL COMMENT '更新时间',

`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标记',

`status` char(1) DEFAULT '0' COMMENT '审核状态:0(待审核) 1(审核通过) 2(驳回) 3(黑名单)',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='sso应用申请表';

Java代码







DROP TABLE IF EXISTS `sso_app_template`;

CREATE TABLE `sso_app_template` (

`id` varchar(200) NOT NULL COMMENT'编号',

`a_id` varchar(200) NOT NULL COMMENT'应用id',

`t_id` varchar(200) NOT NULL COMMENT'模板id',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='sso应用模板中间表';

[java]view plaincopyprint?

DROP TABLE IF EXISTS `sso_app_template`;

CREATE TABLE `sso_app_template` (

`id` varchar(200) NOT NULL COMMENT'编号',

`a_id` varchar(200) NOT NULL COMMENT'应用id',

`t_id` varchar(200) NOT NULL COMMENT'模板id',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='sso应用模板中间表';

DROP TABLE IF EXISTS `sso_app_template`;

CREATE TABLE `sso_app_template` (

`id` varchar(200) NOT NULL COMMENT '编号',

`a_id` varchar(200) NOT NULL COMMENT '应用id',

`t_id` varchar(200) NOT NULL COMMENT '模板id',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='sso应用模板中间表';

Java代码







DROP TABLE IF EXISTS `sso_template`;

CREATE TABLE `sso_template` (

`id` varchar(200) NOT NULL COMMENT'编号',

`name` varchar(200) NOT NULL COMMENT'模板名称',

`type` varchar(200) NOT NULL COMMENT'模板分类',

`img` varchar(200) NOT NULL COMMENT'模板图片',

`create_by` varchar(64) NOT NULL COMMENT'创建者',

`create_date` datetime NOT NULL COMMENT'创建时间',

`update_by` varchar(64) NOT NULL COMMENT'更新者',

`update_date` datetime NOT NULL COMMENT'更新时间',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='sso模板表';

[java]view plaincopyprint?

DROP TABLE IF EXISTS `sso_template`;

CREATE TABLE `sso_template` (

`id` varchar(200) NOT NULL COMMENT'编号',

`name` varchar(200) NOT NULL COMMENT'模板名称',

`type` varchar(200) NOT NULL COMMENT'模板分类',

`img` varchar(200) NOT NULL COMMENT'模板图片',

`create_by` varchar(64) NOT NULL COMMENT'创建者',

`create_date` datetime NOT NULL COMMENT'创建时间',

`update_by` varchar(64) NOT NULL COMMENT'更新者',

`update_date` datetime NOT NULL COMMENT'更新时间',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='sso模板表';

DROP TABLE IF EXISTS `sso_template`;

CREATE TABLE `sso_template` (

`id` varchar(200) NOT NULL COMMENT '编号',

`name` varchar(200) NOT NULL COMMENT '模板名称',

`type` varchar(200) NOT NULL COMMENT '模板分类',

`img` varchar(200) NOT NULL COMMENT '模板图片',

`create_by` varchar(64) NOT NULL COMMENT '创建者',

`create_date` datetime NOT NULL COMMENT '创建时间',

`update_by` varchar(64) NOT NULL COMMENT '更新者',

`update_date` datetime NOT NULL COMMENT '更新时间',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='sso模板表';

2. 执行流程

A. 成用户注册 (可以注册个人账户或者企业账户)

B.  申请应用(可能是多个应用),选择不同的模板(不同模板对应不同行业的sso单点登录系统)

C.  管理人员进行应用审核(申请人提交信息的审核),审核通过以后通过加密方式生成应用对应的token信息

D.  后台管理(应用列表、应用审核、模板管理等)

E. 将token信息和应用信息传递,进行sso统一拦截器认证(验证白名单)

F. 成功or失败(跳转到指定模板的sso登录界面)

3. 效果界面:





愿意了解框架技术或者源码的朋友直接求求交流分享技术:3133806896

分布式的一些解决方案,有愿意了解的朋友可以找我们团队探讨

更多详细源码参考来源

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 之前的文章中有介绍spring cloud sso集成的方案,也做过spring + jwt + redis的解决...
    嘻嘻哈哈1155阅读 3,318评论 0 7
  • CREATE TABLE IF NOT EXISTS ecs_order_info (order_id mediu...
    cookie口阅读 16,029评论 0 16
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,084评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,180评论 18 399
  • 其实网购带来的不适感多来源于怀疑不信任的心态,还有游移不定中消耗的选择能量,。
    jk865阅读 1,279评论 0 0

友情链接更多精彩内容