【微服务】 数据库案例理解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进行模块之间额通讯.然后在此基础上 ...
随机推荐
- J20航模遥控器开源项目系列教程(三)开发说明 | 想要自己改造程序,扩充功能,怎么实现?
我们的开源宗旨:自由 协调 开放 合作 共享 拥抱开源,丰富国内开源生态,开展多人运动,欢迎加入我们哈~ 和一群志同道合的人,做自己所热爱的事! 项目开源地址:https://github.com/C ...
- 彻底搞懂https原理
我终于彻底理解了https原理!!!激动之下,写一篇博客,搞一波分享!!! 本篇博客比较精彩的地方: 思维方式:也是借鉴一位大佬的,写得很棒.https://blog.csdn.net/guolin_ ...
- unsigned char printf 如何输出
参考链接:https://blog.csdn.net/m0_37362454/article/details/88639668 #include <stdio.h> int main() ...
- 常用生成模型代码大全(pytorch/tensorflow)
感谢大佬开源分享 代码详见:https://github.com/wiseodd/generative-models
- Java并发编程(08):Executor线程池框架
本文源码:GitHub·点这里 || GitEE·点这里 一.Executor框架简介 1.基础简介 Executor系统中,将线程任务提交和任务执行进行了解耦的设计,Executor有各种功能强大的 ...
- seo工程师是什么,需要什么技能?
http://www.wocaoseo.com/thread-222-1-1.html seo工程师是什么,SEO工程师是目前需求较大的一种职业,是搜索引擎营销的一种,主要是是通过网站优化技 ...
- WebApis中BOM的学习
1.1. 常用的键盘事件 1.1.1 键盘事件 <script> // 常用的键盘事件 //1. keyup 按键弹起的时候触发 document.addEventListener('ke ...
- Flink从入门到入土(详细教程)
和其他所有的计算框架一样,flink也有一些基础的开发步骤以及基础,核心的API,从开发步骤的角度来讲,主要分为四大部分 1.Environment Flink Job在提交执行计算时,需要首先建立和 ...
- Android开发之将Edittext输入弹出的软键盘设置搜索确定键。详细代码,已验证可用。
1,首先在布局中添加 android:imeOptions="actionSearch 2,然后java代码中设置代码: et_input_password.setOnEditorActio ...
- asp image
@Url.Content("~/Content/images/myimage.png") <img src="~/Content/images/myimage.pn ...