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

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

更多详细源码参考来源

时间: 2024-08-15 05:03:42

Spring+ Spring cloud + SSO单点登录应用认证的相关文章

Spring Cloud云架构 - SSO单点登录之OAuth2.0登录流程(2)

上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的登录认证):  上面的图很清楚的描述了当前登录login的流程,现在我们针对于login做成相关的微服务,解析如下: 请求方式:POST服务URL: http://localhost:8080/user/login参数类型:application/jsonHeaders: Content-Type:

整合spring cloud云架构 - SSO单点登录之OAuth2.0登录流程(2)

上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的登录认证): 上面的图很清楚的描述了当前登录login的流程,现在我们针对于login做成相关的微服务,解析如下:请求方式:POST服务URL: http://localhost:8080/user/login参数类型:application/jsonHeaders: Content-Type: a

整合spring cloud云架构 - SSO单点登录之OAuth2.0登录流程

上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的登录认证): 上面的图很清楚的描述了当前登录login的流程,现在我们针对于login做成相关的微服务,解析如下: 请求方式:POST服务URL: http://localhost:8080/user/login参数类型:application/json Headers: Content-Type:

spring cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)

上一篇我根据框架中OAuth2.0的使用总结,画了SSO单点登录之OAuth2.0 登出流程,今天我们看一下根据用户token获取yoghurt信息的流程: Java代码   /** * 根据token获取用户信息 * @param accessToken * @return * @throws Exception */ @RequestMapping(value = "/user/token/{accesstoken}", method = RequestMethod.GET) pu

Spring Cloud云架构 SSO单点登录之OAuth2.0 根据token获取用户信息(4)

上一篇我根据框架中OAuth2.0的使用总结,画了SSO单点登录之OAuth2.0 登出流程,今天我们看一下根据用户token获取yoghurt信息的流程: /** * 根据token获取用户信息 * @param accessToken * @return * @throws Exception */ @RequestMapping(value = "/user/token/{accesstoken}", method = RequestMethod.GET) public Resp

(十三) 整合spring cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)

上一篇我根据框架中OAuth2.0的使用总结,画了SSO单点登录之OAuth2.0 登出流程,今天我们看一下根据用户token获取yoghurt信息的流程: /** * 根据token获取用户信息 * @param accessToken * @return * @throws Exception */ @RequestMapping(value = "/user/token/{accesstoken}", method = RequestMethod.GET) public Resp

整合spring cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息

上一篇我根据框架中OAuth2.0的使用总结,画了SSO单点登录之OAuth2.0 登出流程,今天我们看一下根据用户token获取yoghurt信息的流程: /** * 根据token获取用户信息 * @param accessToken * @return * @throws Exception */ @RequestMapping(value = "/user/token/{accesstoken}", method = RequestMethod.GET) public Resp

spring+springmvc+Interceptor+jwt+redis实现sso单点登录

在分布式环境中,如何支持PC.APP(ios.android)等多端的会话共享,这也是所有公司都需要的解决方案,用传统的session方式来解决,我想已经out了,我们是否可以找一个通用的方案,比如用传统cas来实现多系统之间的sso单点登录或使用oauth的第三方登录方案? 今天给大家简单讲解一下使用spring拦截器Interceptor机制.jwt认证方式.redis分布式缓存实现sso单点登录 } publicvoid setUid(String uid) { this.uid = ui

NET Core 2.0使用Cookie认证实现SSO单点登录

NET Core 2.0使用Cookie认证实现SSO单点登录 之前写了一个使用ASP.NET MVC实现SSO登录的Demo,https://github.com/bidianqing/SSO.Sample,这个Demo是基于.NET Framework,.NET Core 2.0出来了试着使用ASP.NET Core尝试一下.假如我们有三个站点 domain.dev order.domain.dev passport.domain.dev domain.dev作为我们的主站肯定是可以匿名访问