【微服务】 数据库案例理解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进行模块之间额通讯.然后在此基础上 ...
随机推荐
- 算法-heapq模块优先队列
heapq模块, 优先队列,小顶堆,最少值放在顶部,值越小,优先级越高 heapq.heappop(heap) 从堆中弹出最小的元素,并重新调整 heapq.heappush(heap, item)新 ...
- Mybatis分页插件: pageHelper的使用及其原理解析
在实际工作中,很进行列表查询的场景,我们往往都需要做两个步骤:1. 查询所需页数对应数据:2. 统计符合条件的数据总数:而这,又会导致我们必然至少要写2个sql进行操作.这无形中增加了我们的工作量,另 ...
- cmd 和powershell 用git 显示乱码
错误: 解决: 只需在环境变量中加入 LESSCHARSET=utf-8
- 04.简单了解一下Redis企业级数据备份方案
一.企业级的持久化的配置策略 (1)每隔1分钟去检查如果超过10000个可以变更,则生成一个快照.RDB最多丢1分钟的数据. save 60 10000 (2)AOF一定要打开,fsync,every ...
- vue-cli根据不同的命令自动切换不同环境地址
前言 我们再使用vue脚手架开发项目时,不可避免的涉及到多个环境来回切换接口调用地址的问题,在开发环境中可能会通过 ip 来访问后台接口,但是当项目上线后就要把对用的接口地址换成生产环境的地址,肯定不 ...
- 轻轻松松学CSS:background
background是复合属性,它可以分解为8个属性,其中5个属于CSS,另外3个属于CSS3一.CSS 1.background-color:背景色 2.background-image ...
- Python技术调查
1. IDE 2. Local Debugging & Remote Debugging 3. Profiling
- Python基本
Python基本规则 1.面向对象的跨平台的编程语言 2.文件类型是.py, 3.一个文件是一个模块module,运行整个文件 4.不支持非英文字符,区分大小写 5.一行是一条语句,多条语句写一行用; ...
- 轻轻松松学CSS:媒体查询
轻轻松松学CSS:利用媒体查询创建响应式布局 媒体查询,针对不同的媒体类型定制不同的样式规则.在网站开发中,可以创建响应式布局. 一.初步认识媒体查询在响应式布局中的应用 下面实例在屏幕可视窗口尺寸大 ...
- 12 props 传的是数组处理
<template> <div>InfoDetailed</div> </template> <script> export default ...