【微服务】 数据库案例理解Spring Security OAuth
突然被问,你是做技术的怎么不走技术路线呢?是啊~仔细想想至今做了这么多年的技术,研发过的系统&产品五花八门,涉及到的领域各行各业:政府、军队、公安、国安、石油&石化、金融、教育、华为等.传统行业——互联网——物联网.在此过程中不断地切换不同的角色,面对不同的客户,体验不同的洗礼...常常跟朋友聊听说其实我们是"演员".继续在乐不疲惫中砥砺前行,或许是因为真正的热爱吧!
少年已去,岁月已走.也许,平庸的人要实现梦想,就是好好地活着,活得比别人久一些吧!
开始之旅

官网的SpringSecurity介绍,翻译:Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架.它是用于保护基于Spring的应用程序的实际标准.Spring Security是一个框架,致力于为Java应用程序提供身份验证和授权.与所有Spring项目一样,Spring Security的真正强大之处在于可以轻松扩展以满足自定义要求

官网OAuth介绍,翻译:OAuth 2.0是用于授权的行业标准协议.它致力于简化客户端开发人员的工作,同时为Web应用程序,桌面应用程序,移动电话和客厅设备提供特定的授权流程.
模块说明
study
├── study-api -- 各种API远程接口
├── study-auth -- 认证授权中心服务,端口3008
└── study-core -- 核心模块
├── study-common -- 公共类相关
├── study-data -- 缓存和数据相关
├── study-security -- 安全资源相关
├── study-sys --各种管理服务,端口8888
├── study-web -- LayUi,端口8866
终端配置(核心表)
drop table if exists `sys_oauth_client_details`;
create table `sys_oauth_client_details` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`client_id` varchar(255) not null comment '终端编号',
`client_secret` varchar(255) not null comment '终端安全码',
`resource_ids` varchar(255) default null comment '资源ID标识',
`scope` varchar(255) not null comment '终端授权范围',
`authorized_grant_types` varchar(255) not null comment '5种oauth授权方式',
`web_server_redirect_uri` varchar(255) default null comment '服务器回调地址',
`authorities` varchar(255) default null comment '访问资源所需权限',
`access_token_validity` int(11) default null comment 'access_token的有效时间值(秒)',
`refresh_token_validity` int(11) default null comment 'refresh_token的有效时间值(秒)',
`additional_information` varchar(4096) default null comment '附加信息',
`autoapprove` tinyint(4) default null comment '是否自动授权',
primary key (`id`)
) engine=Innodb comment = '终端配置表' CHARSET=utf8mb4;
insert into `sys_oauth_client_details` values (1,'test','test', NULL,'server', 'password,refresh_token','',NULL,3600,7200,NULL,NULL);
insert into `sys_oauth_client_details` values (2,'simple','simple',NULL,'server', 'password,client_credentials,refresh_token','',NULL,3600,7200,NULL,NULL);
认证中心Token来龙去脉
- 配置终端

ENC(****)****等于终端表的client_id值即test,该技能后期在做讲解.
- 开启授权服务
@EnableAuthorizationServer //开启授权服务
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {
//......此处省略
/**
* 配置身份认证器,配置认证方式,TokenStore,TokenGranter,OAuth2RequestFactory
*
* @param endpoints
*/
public void configure(AuthorizationServerEndpointsConfigurer endpoints) {
endpoints
//接收GET和POST
.allowedTokenEndpointRequestMethods(HttpMethod.GET, HttpMethod.POST)
//指定token存储方式
.tokenStore(tokenStore)
//令牌生成
.tokenEnhancer(tokenEnhancer)
//用户账号密码认证
.userDetailsService(userDetailsService)
// 指定认证管理器
.authenticationManager(authenticationManagerBean)
//reuseRefreshTokens是重用刷新令牌 false代表每次获取新的
.reuseRefreshTokens(false)
//自定义异常
.exceptionTranslator(new CustomWebResponseExceptionTranslator());
}
此处的tokenStore可指定如下方式:

- 获取用户信息

通过实现UserDetailsService调用loadUserByUsername方法来获取数据中存在的用户权限信息等.其中remoteUserService即为远程服务调用
- 启动端口号分别为3008和8888服务
先配置client_id和client_secret,并使用Base64编码之后作为请求头.先拼接:client_id:client_secret 如test:test 使用任意Base64工具编码:dGVzdDp0ZXN0,其中client_id和client_secret必须是在终端配置表中存在的数据

在Postman中调用oauth/token接口

如果不带此client访问接口

带上client、用户名、密码、授权类型、授权范围请求接口

调用链分析

Spring Security OAuth核心源码

下回分解如何返回自定义Token~敬请关注!!!
我是天开易想,一位懂互联网研发&架构的户外、篮球老铁|致力于提升认知&上升空间&终生学习者|希望和大家一起成长!
世界上最好的关系是相互成就,关注点赞转发,感谢感恩

【微服务】 数据库案例理解Spring Security OAuth的更多相关文章
- Spring Security + OAuth系统环境搭建(一)
最近在做权限管理系统的重构工作,系统基于Spring Security + OAuth架构,整体架构.技术和之前调研的结果差不多,架构调研时有在这篇博客做过简单记录“Spring Cloud微服务下的 ...
- Spring Security OAuth笔记
因为工作需要,系统权限安全方面可能要用到Spring Security OAuth2.0,所以,近几天了解了一下OAuth相关的东西.目前好像还没有系统的学习资料,学习主要是通过博客,内容都是大同小异 ...
- Spring Security OAuth 2.0
续·前一篇<OAuth 2.0> OAuth 2.0 Provider 实现 在OAuth 2.0中,provider角色事实上是把授权服务和资源服务分开,有时候它们也可能在同一个应用中, ...
- Spring Security OAuth 2开发者指南译
Spring Security OAuth 2开发者指南译 介绍 这是用户指南的支持OAuth 2.0.对于OAuth 1.0,一切都是不同的,所以看到它的用户指南. 本用户指南分为两部分,第一部分为 ...
- Spring Security OAuth 笔记
1 单点登录 关于单点登录的原理,我觉得下面这位老哥讲的比较清楚,有兴趣可以看一下,下面我把其中的重点在此做个笔记总结 https://juejin.cn/post/6844904079274197 ...
- Spring Security OAuth 格式化 token 输出
个性化token 背景 上一篇文章<Spring Security OAuth 个性化token(一)>有提到,oauth2.0 接口默认返回的报文格式如下: { "ac ...
- Spring Security OAuth正式终止维护,已从官网下架
Spring Security团队正式宣布Spring Security OAuth终止维护. 目前官网的主页已经高亮提醒彻底停止维护. 旧的Spring Security OAuth项目终止到2.5 ...
- 干货|一个案例学会Spring Security 中使用 JWT
在前后端分离的项目中,登录策略也有不少,不过 JWT 算是目前比较流行的一种解决方案了,本文就和大家来分享一下如何将 Spring Security 和 JWT 结合在一起使用,进而实现前后端分离时的 ...
- SpringCloud(1)---基于RestTemplate微服务项目案例
基于RestTemplate微服务项目 在写SpringCloud搭建微服务之前,我想先搭建一个不通过springcloud只通过SpringBoot和Mybatis进行模块之间额通讯.然后在此基础上 ...
随机推荐
- 数据分析-RFM模型用户分析
RFM模型 根据美国数据库营销研究所Arthur Hughes的研究,客户数据库中有3个神奇的要素,这3个要素构成了数据分析最好的指标: 最近一次消费 (Recency) 消费频率 (Frequenc ...
- MD笔记
1.力场中的例子电荷是有效电荷(clayff),有别于化学式中的电荷. 2.游离状态的阳离子(如层间阳离子)的电荷不能变动:而Al-O八面体.Si-O四面体中的离子(Al.Si等)电荷可以微调. 3. ...
- LG P6788 「EZEC-3」四月樱花
Description 在樱花盛开的四月,Muxii 望着满天飘落的樱花,向身旁的 ZZH 问道: “究竟有多少朵樱花在这个四月飘落?” ZZH 答道:“樱花飘落的朵数 $s$与时间 $t$ 有如下 ...
- 温故知新——Spring AOP
Spring AOP 面向切面编程,相信大家都不陌生,它和Spring IOC是Spring赖以成名的两个最基础的功能.在咱们平时的工作中,使用IOC的场景比较多,像咱们平时使用的@Controlle ...
- vue前端工程化
今日目标 1.能够了解模块化的相关规范 2.了解webpack3.了解使用Vue单文件组件4.能够搭建Vue脚手架 5.掌握Element-UI的使用 1.模块化的分类 A.浏览器端的模块化 1) ...
- Linux系统时间同步方法
在Windwos中,系统时间的设置很简单,界面操作,通俗易懂,而且设置后,重启,关机都没关系.系统时间会自动保存在BIOS时钟里面,启动计算机的时候,系统会自动在BIOS里面取硬件时间,以保证时间的不 ...
- CSAPP bomb分析
CSAPP bomb分析 问题介绍 这是一个关于反汇编方面的问题,根据已有的二进制代码来推测程序中的特定条件,主要参考了以下各个博客: CSDN 1 CSDN 2 CSDN 3 CSDN 4 stac ...
- ent orm笔记4---Code Generation
在前面几篇文章中,我们经常使用的可能就是entc这个命令了,entc这个工具给带来了很多功能,这篇文章主要整理关于ent orm 中Code Generation 之前的例子中有个知识点少整理了,就是 ...
- Python 3.10 明年发布,看看都有哪些新特性?
我们目前生活在Python 3.8的稳定时代,上周发布了Python的最新稳定版本3.8.4.Python 3.9已经处于其开发的beta阶段,并且2020年7月3日预发布了beta版本(3.9.0b ...
- 8个必备的Python GUI库
Python GUI 库有很多,下面给大家罗列常用的几种 GUI 库.下面介绍的这些GUI框架,能满足大部分开发人员的需要,你可以根据自己的需求,选择合适的GUI库. 很多人学习python,不知道从 ...