oauth2.0第2季 分布式认证与授权实现单点登录
一 oauth介绍
1.0 疑问汇总
1.使用jwttoken进行令牌传输,资源服务器在本地怎么验证token?
1.1 oauth的基础内容
1.1.1 oauth是什么
1.1.2 oauth的角色
1.1.3 oauth的认证流程
1.1.4 oauth的4种模式
1.2 为何要用oauth2.0
1.介绍单体架构 使用sesion保存会话信息的情况
2.前后端分离项目,调用方式
session架构不适合前后端分离项目
3.解决办法,引出oauth2.0
1.3 待验证
配置文件配置了端口喝上下文路径

访问的时候为: http://localhost:8090/auth/lgoin 如果没有配置/auth这一层级,是不是为
http://localhost:8090/lgoin

二 案例搭建
2.1 搭建父工程
2.2 搭建认证中心服务
2.2.1 认证中心的安全和认证配置
1.认证中心的配置


2.安全配置
3.访问端点
所谓访问端点就是 提供访问的url接口地址
4.测试4种验证模式的验证情况
5.密码模式需要在配置文件中添加:authenticationManager(xxxx) 实例


6.客户端模式


2.2.2 刷新令牌
使用一段时间后,token过期后,需要获取新的token,携带参数以及需要的配置



2.2.3 redis管理令牌


添加到容器

2.2.4 jdbc管理令牌


2.2.5 jdbc管理授权码



2.2.6 保存客户端信息

2.2.8 验证认证信息端点



2.2.9 基于RBAC查询数据库认证

2.3 资源管理器服务搭建
2.3.1 原理概述
资源服务服务器实际上就是要调用的各个微服务,如订单服务,商品服务,会员服务等。在微服务的架构中,每个微服务就是资源,当用户请求某个微服务资源时,首先通过认证服务器进行认证与授权,通过后才可以访问对应的资源。

2.3.2 搭建资源服务工程

2.3.3 请求资源服务器测试
1.不带token直接访问

2.携带token进行访问

2.3.4 设置资源的请求范围

禁用session

2.4 使用jwtToken进行认证授权
2.4.1 为何要使用jwt

每次访问资源服务的时候,都要验证token的合法性,远程调用认证服务中验证token的合法性。如果访问量较大影响系统的性能。解决办法使用jwt,jwt包含了用户的基本信息,客户端携带jwt访问资源,资源服务器会通过事先约定好的算法进行解析出来,然后对jwt令牌进行校验,不需要每次远程请求认证服务器。
2.4.2 认证服务配置jwt的对称秘钥
如下图:
每一个访问资源服务器都要经过此方法进行验证token的合法性。这样会造成认证服务器的压力过大,因此需要一种机制解决此种情况。使用jwt可以直接在资源服务器中,自身进行验证,无需再调用认证中心服务的连接进行验证。

改为:

注册到容器中

访问:

2.4.3 资源配置jwt的对称秘钥

1.注释掉调用认证服务代码

2.新增jwt认证
3.容器注册

2.4.4 认证服务配置jwt的非对称秘钥


2.4.5 资源服务配置jwt的非对称秘钥

三 oauth2.0分布式认证授权
3.1 分布式认证授权流程

3.2 eureka注册中心的搭建

3.3 资源服务器和认证服务器配置注册到eureka中
1.配置pom依赖
2.配置yml文件
3.启动类添加注解


3.4 配置网关zuul
3.4.1.基础网关配置


3.4.2 .网关配置资源服务配置类

1.配置放行和过滤判断的路径

3.4.3.网关安全配置类
1.配置springsecurityconfig类

3.4.4.认证过滤器的配置

2.跨域解决

3.5.资源服务进行解析并授权
3.5.1 过滤器实现授权
在微服务中接收到网关转发过来的token后,需要我们构建一个Authentication对象来完成微服务的认证与授权;这样这个微服务就可以根据用户所拥有的权限,来判断对应的资源是否可以被用户访问。

2.封装Authentication

3.验证访问
3.6.client1和client2系统配置到网关网关整合单点登录
1.配置注册eureka的信息
2.修改认证服务的端口,改成为网关的端口7001

3.7 客户端资源服务接口携带令牌token

2.配置OAuth2RestTemplate

3.client1 请求 资源服务器


相关文章:
oauth2.0第2季 分布式认证与授权实现单点登录
一 oauth介绍 1.0 疑问汇总 1.使用jwttoken进行令牌传输,资源服务器在本地怎么验证token? 1.1 oauth的基础内容 1.1.1 oauth是什么 1.1.2 oauth的角色 1.1.3 oauth的认证流程 1.1.4 oauth的4种模式 1.2 为何要用oauth2.0 1.介绍单体架构 使用ses…...
SpringBoot一些困惑及梳理
Spring中常用的classpath前缀到底指向哪里? classpath实际就是和java命令行运行时指定的classpath是同一个概念,在ideamaven中也就是指向target/classes目录。不要被网上哪些复制粘贴的文章所迷惑。classpath: 和 classpath*: 到底什么区别? classpath: 实际就是当…...
PostgreSQL汉字转拼音首字母
PostgreSQL汉字转拼音首字母,最近有个需求要做搜索优化,要求提取汉字首字母识别输入,图方便直接数据库用函数批量转换了,整理了网上的两个方法函数备忘,非原创。 https://blog.qdac.cc/?p1281 https://developer.aliy…...
HBuilderX修改manifest.json设置,解决跨域问题(CORS、Cross-Origin)
搭建一个前台uniapp,后台springboot的开发环境时,遇到了跨域问题。 console提示错误信息: Access to XMLHttpRequest at http://10.0.180.203/api/cms/getAdList?apId1 from origin http://localhost:8080 has been blocked by CORS policy…...
AR地图微信小程序:数字化时代下地图应用的新突破
随着数字化时代的到来,地图应用成为人们日常生活中不可或缺的工具。而随着增强现实(AR)技术的快速发展,AR地图微信小程序应运而生,为用户提供了一种全新的地图导航体验。本文将深入探讨AR地图微信小程序的专业性和思考…...
成集云 | 抖店客户静默下单催付数据同步钉钉 | 解决方案
源系统成集云目标系统 方案介绍 随着各品牌全渠道铺货,主播在平台上直播时客户下了订单后不能及时付款,第一时间客户收不到提醒,不仅造成了客户付款率下降,更大量消耗了企业的人力成本和经济。而成集云与钉钉深度合作࿰…...
C++中的运算符总结(5):按位逻辑运算符
C中的运算符总结(5):按位逻辑运算符 9、按位运算符 NOT( ~)、 AND( &)、 OR( |)和 XOR( ^) 逻辑运算符和按位运算符之前的差别在…...
《异常检测——从经典算法到深度学习》22 Kontrast: 通过自监督对比学习识别软件变更中的错误
《异常检测——从经典算法到深度学习》 0 概论1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法3 基于One-Class SVM的异常检测算法4 基于高斯概率密度异常检测算法5 Opprentice——异常检测经典算法最终篇6 基于重构概率的 VAE 异常检测7 基于条件VAE异常检测8 Donut: …...
大数据风控介绍
众所周知,金融是数据化程度最高的行业之一,也是人工智能和大数据技术重要的应用领域。随着大数据收集、存储、分析和模型技术日益成熟,大数据技术逐渐应用到金融风控的各个环节。个推作为专业的数据智能服务商,拥有海量数据资源&a…...
Linux内核学习(九)—— 虚拟文件系统(基于Linux 2.6内核)
虚拟文件系统(VFS)作为内核子系统,为用户空间程序提供了文件和文件系统相关的接口。通过虚拟文件系统,程序可以利用标准的 Unix 系统调用对不同的文件系统(甚至不同介质上的文件系统)进行读写操作。 一、通…...
【模拟】算法实战
文章目录 一、算法原理二、算法实战1. leetcode1576 替换所有的问号2. leetcode495 提莫攻击3. leetcode6 N字形变换4. leetcode38 外观数列5. leetcode1419 数青蛙 三、总结 一、算法原理 模拟就是用计算机来模拟题目中要求的操作,模拟题目通常具有代码量大、操作…...
各个微服务模块之间互相依赖调用的问题
首先是模块之间不能够循环引用,否则会报循环依赖引入的错误。 没有了模块之间的相互依赖,在项目中这两个模块是相互调用的,分别各自定义相应的Feign接口,如下: 最开始写的运行报错的代码如下: FeignCli…...
理论转换实践之keepalived+nginx实现HA
背景: keepalivednginx实现ha是网站和应用服务器常用的方法,之前项目中单独用nginx实现过负载均衡和服务转发,keepalived一直停留在理论节点,加之最近工作编写的一个技术文档用到keepalived,于是便有了下文。 服务组件…...
华为OD七日集训第1期复盘 - 按算法分类,由易到难,循序渐进,玩转OD(文末送书)
目录 一、活动内容如下第1天、逻辑分析第2天、字符串处理第3天、数据结构第4天、双指针第5天、递归回溯第6天、二分查找第7天、贪心算法 && 二叉树 二、可观测性工程1、简介2、主要内容 大家好,我是哪吒。 最近一直在刷华为OD机试的算法题,坚持…...
MPI之持久化通信句柄与非持久化通信句柄
MPI_Isend & MPI_Send 创建临时通信句柄 在前面的文章中举了例子,我们使用MPI_Isend接口发送数据时,有个传出参数request,该参数是创建的通信句柄, 实际上该句柄是一个临时句柄,即只用于一次性发送数据的场景&…...
搭建个人备忘录中心服务memos、轻量级笔记服务
目录 一、源码 二、官网 三、搭建 四、使用 一、源码 GitHub - usememos/memos: A privacy-first, lightweight note-taking service. Easily capture and share your great thoughts. 二、官网 memos - Easily capture and share your great thoughts 三、搭建 docke…...
探究代理技术在网络安全、爬虫与HTTP通信中的多重应用
在当今高度互联的世界中,代理技术在网络安全、爬虫开发以及HTTP通信中扮演着举足轻重的角色。本文将深入探讨Socks5代理、IP代理以及HTTP代理在这些领域中的多重应用,探索其如何为我们创造更安全、高效的网络环境。 1. Socks5代理:构建安全通…...
vue左侧漏斗切换 echart图表动态更新
这个需求是根据点击左侧的箭头部分,右侧图表切换,左侧选中数据高亮(图片用的svg) 一、效果图 二、vue组件 <template><div class"funnel_wrap"><div class"flex_between"><div class&q…...
Centos7安装ZK-UI管理界面安装|Maven|Git|
一: JDK1.8安装 参考: Centos7卸载|安装JDK1.8|Xshell7批量控制多个终端 二:Maven安装 2.1:下载maven安装包 maven 下载地址:https://mirror.bit.edu.cn/apache/maven/maven-3/ [rootwww ~]# mkdir -p /usr/local/maven [rootwww ~]# …...
C语言日常刷题7
文章目录 题目答案与解析1234567 题目 1、如下程序的运行结果是( ) char c[5]{a, b, \0, c, \0}; printf("%s", c)A: ‘a’ ‘b’ B: ab\0c\0 C: ab c D: ab 2、若有定义: int a[2][3]; ,以下选项中对 a 数组元素正确…...
OPCUA结构体数据处理全解析:C#如何高效读写ExtensionObject中的复杂数据
OPCUA结构体数据处理全解析:C#如何高效读写ExtensionObject中的复杂数据 在工业自动化与物联网系统中,OPCUA协议已成为设备间数据交换的事实标准。当面对复杂的自定义结构体数据时,ExtensionObject的处理往往成为开发者的痛点。本文将深入剖析…...
电商网站SEO网站结构应该如何设计
电商网站SEO网站结构设计的关键点 在当今数字化时代,电商网站的成功离不开搜索引擎优化(SEO)。一个精心设计的网站结构不仅能提升网站的用户体验,还能大大提高在搜索引擎上的排名。电商网站SEO网站结构应该如何设计呢?…...
内网渗透全流程拆解|从入门到实战,小白也能看懂的步骤
内网渗透不是“盲目尝试”,而是遵循固定流程的系统化操作,核心流程可概括为:信息收集→漏洞利用→权限提升→横向移动→权限维持→痕迹清理,每个环节环环相扣,缺一不可。本文将结合小白易理解的实战场景,详…...
嵌入式开发中数据结构的优化与应用实践
1. 数据结构在嵌入式开发中的核心价值作为一名在嵌入式领域摸爬滚打十年的老兵,我深刻体会到数据结构就像瑞士军刀里的各种工具——选对工具能让工作事半功倍。在资源受限的MCU环境中,一个精心选择的数据结构可能意味着程序能否流畅运行和内存是否会爆掉…...
千问3.5-27B知识库应用:OpenClaw变身技术问答助手
千问3.5-27B知识库应用:OpenClaw变身技术问答助手 1. 为什么需要本地化技术问答助手? 去年我在开发一个开源项目时,遇到了一个奇怪的Docker网络问题。当时在Stack Overflow上搜索了半天,找到的答案要么过时,要么不适…...
Agent在零售行业能解决哪些痛点?——深度解析零售企业智能自动化转型路径
在2026年零售行业加速迈向智能化的背景下,AI Agent(人工智能智能体)已不再仅仅是技术实验室的产物,而是演变为重构行业价值链的核心驱动力。传统的零售运营长期受困于人力密集型模式,面临着全球化运营复杂度高、数据孤…...
多层PCB结构设计与过孔工艺全解析
1. 多层PCB内部结构全解析作为一名硬件工程师,第一次拆解十层PCB板时,那种震撼感至今难忘。密密麻麻的过孔像微型城市的地下管网,精密排布的走线堪比神经脉络。今天我就用最直观的立体解剖图,带你看透这些"电子乐高"的搭…...
实战派指南:用MaPLe思路优化你的CLIP下游任务,附关键配置与避坑建议
实战派指南:用MaPLe思路优化你的CLIP下游任务,附关键配置与避坑建议 当CLIP遇上业务场景,90%的开发者都会遇到相同的问题:模型在新类别上的表现总是不尽如人意。上周团队用默认参数跑跨模态检索任务时,基类准确率82%的…...
开源新形态:从代码到Prompt的转变
【导语:3月末,开源作者yetone发布新项目voice-input-src,以独特方式“开源”,即用自然语言Prompt生成代码,此做法引发讨论,或预示开源模式新转变。】AI驱动的语音输入法开源项目开源作者yetone在GitHub上发…...
PX4固件二次开发入门:从源码结构到第一个自定义模块(基于v1.11版本)
PX4固件二次开发实战:从源码解析到自定义模块开发(v1.11版本) 当你第一次打开PX4的源码仓库,面对数十个文件夹和数千个文件时,那种扑面而来的压迫感我深有体会。作为过来人,我想分享一套系统性的二次开发方…...
