【微服务】 数据库案例理解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进行模块之间额通讯.然后在此基础上 ...
随机推荐
- SpringBoot--- SpringSecurity进行注销,权限控制
SpringBoot--- SpringSecurity进行注销,权限控制 环境 IDEA :2020.1 Maven:3.5.6 SpringBoot: 2.0.9 (与此前整合的版本2.3.3 不 ...
- df卡死和fork:cannot allocate memory报错
早上到了公司,发现docker资源池的某一台主机根文件系统写满. 检查后发现该主机/data目录未挂载文件系统,直接放在了根目录下.于是联系业务方将应用迁移,联系主机工程师为/data挂载80G的存储 ...
- Camera学习--光源
进入CV 领域,视频图像的成像,最前端的camera,camera的sensor 以及影响成像质量的光源,噪声等因素是绕不开的问题. 那么今天就从成像的光源说起. 标准光源(Standard Ligh ...
- 牛客网PAT练兵场-完美数列
题目地址:https://www.nowcoder.com/pat/6/problem/4056 题解:先将a数组进行排序,第一次按题意M<=n*p;n=a[0]时,M最大为J(如下图),然后n ...
- springsession
Spring Session 一. HttpSession 回顾 1 什么是 HttpSession 是 JavaWeb 服务端提供的用来建立与客户端会话状态的对象. 二. Session 共享 1 ...
- 焦大:seo思维进化论(下)
http://www.wocaoseo.com/thread-50-1-1.html 很多东西在不同地方其所有的价值和意义是不一样的,seo亦是如此.在seo操作中我觉得最核心的就是检索价值观和用户需 ...
- [apue] 一图读懂 unix 文件句柄及文件共享过程
与文件相关的一些概念 在开始上图之前,先说明几个和 unix 文件密切相关的术语,方便后续讨论使用 文件句柄 / 文件描述符 (file descriptor 或 FD):描述一个打开文件相关属性的类 ...
- Python采集CSDN博客排行榜数据
文章目录 前言 网络爬虫 搜索引擎 爬虫应用 谨防违法 爬虫实战 网页分析 编写代码 运行效果 反爬技术 前言 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知 ...
- 一文吃透redis持久化,妈妈再也不担心我面试过不了!
持久化介绍 redis 提供了两种方式方式进行数据的持久化(将数据存储到硬盘中):第一种称为快照(snapshotting)RDB,它将某一时刻的所有数据都写入硬盘,所以快照是一次全量备份,并且存储的 ...
- String.format与搭配转化符的使用
String的format语法搭配转化符,在格式化输出方面效果特别好,值得掌握. 例程: System.out.println("----C1---|----C2---|----C3---| ...