Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >支持Nacos 2.1.0!这套Spring Cloud Gateway+Oauth2终极权限解决方案升级了!

支持Nacos 2.1.0!这套Spring Cloud Gateway+Oauth2终极权限解决方案升级了!

作者头像
macrozheng
发布于 2022-07-24 09:01:03
发布于 2022-07-24 09:01:03
1.6K00
代码可运行
举报
文章被收录于专栏:mall学习教程mall学习教程
运行总次数:0
代码可运行

最近经常有小伙伴问我关于在微服务中使用Oauth2的问题,其实之前已经写过一篇相关文章了。这次抽空把之前文章中的Demo给升级了,支持了最新版的Spring Cloud和Nacos。今天再来介绍下这套微服务权限终极解决方案,希望对大家有所帮助!

实现思路

首先还是来聊聊这套解决方案的实现思路,我们理想的解决方案应该是这样的,认证服务负责统一认证,网关服务负责校验认证和鉴权,其他API服务则负责处理自己的业务逻辑。安全相关的逻辑只存在于认证服务和网关服务中,其他服务只是单纯地提供服务而没有任何安全相关逻辑。

这套解决方案中相关服务的划分如下:

  • micro-oauth2-gateway:网关服务,负责请求转发和鉴权功能,整合Spring Security+Oauth2;
  • micro-oauth2-auth:认证服务,负责对登录用户进行认证,整合Spring Security+Oauth2;
  • micro-oauth2-api:API服务,受网关服务的保护,用户鉴权通过后可以访问该服务,不整合Spring Security+Oauth2。

升级注意点

  • 这里项目的依赖版本都升级了,支持SpringBoot 2.7.0和最新版的Spring Cloud;
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<properties>
    <spring-boot.version>2.7.0</spring-boot.version>
    <spring-cloud.version>2021.0.3</spring-cloud.version>
    <spring-cloud-alibaba.version>2021.0.1.0</spring-cloud-alibaba.version>
</properties>
  • 这里不得不吐槽下Spring Cloud的版本号,之前名字采用了伦敦地铁站的名字,根据字母表的顺序来对应版本时间顺序,后来又改成了年份,现在又添加了之前废弃的地铁站名字作为别名,真是让人迷惑;
  • SpringBoot 2.7.0版本中使用Maven插件需要添加版本号;
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>${spring-boot.version}</version>
</plugin>
  • 最新版本的Spring Cloud已经放弃使用Ribbon来做负载均衡了,转而使用LoadBalancer,所以网关服务micro-oauth2-gateway中还需添加LoadBalancer依赖;
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
  • 如果不添加LoadBalancer依赖,从网关调用任意服务会返回Service Unavailable错误信息;
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "timestamp": "2022-06-28T02:36:31.680+00:00",
    "path": "/auth/oauth/token",
    "status": 503,
    "error": "Service Unavailable",
    "requestId": "c480cefa-1"
}
  • micro-oauth2-auth认证服务需要升级版本,注意使用的JWT库也要同步升级;
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-oauth2</artifactId>
        <version>2.2.5.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>com.nimbusds</groupId>
        <artifactId>nimbus-jose-jwt</artifactId>
        <version>9.23</version>
    </dependency>
</dependencies>
  • 下载Nacos 2.1.0版本,下载地址:https://github.com/alibaba/nacos/releases
  • 下载完成后解压到指定目录即可,使用如下命令启动Nacos;
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
startup.cmd -m standalone
  • 访问Nacos控制台,使用账号密码nacos:nacos进行登录,访问地址:http://localhost:8848/nacos/

使用

本文仅作为微服务权限终极解决方案,Spring Cloud Gateway + Oauth2 实现统一认证和鉴权! 升级版本的补充,具体代码实现可以参考该文,下面演示下该解决方案中的统一认证和鉴权功能。

  • 首先需要启动Nacos和Redis服务,然后依次启动micro-oauth2-authmicro-oauth2-gatewaymicro-oauth2-api服务,启动完成后Nacos服务列表显示如下;
  • 使用密码模式获取JWT令牌,访问地址:http://localhost:9201/auth/oauth/token
  • 不带JWT令牌访问受保护的API接口,访问地址:http://localhost:9201/api/hello
  • 带JWT令牌访问受保护的API接口,注意请求头Authorization添加Bearer前缀,可以正常访问;
  • 使用获取到的JWT令牌访问获取当前登录用户信息的接口,访问地址:http://localhost:9201/api/user/currentUser
  • 当JWT令牌过期时,使用接口返回的refreshToken获取新的JWT令牌,访问地址:http://localhost:9201/auth/oauth/token
  • 使用没有访问权限的andy:123456账号登录,访问接口时会返回如下信息,访问地址:http://localhost:9201/api/hello

总结

在微服务系统中实现权限功能时,我们不应该把重复的权限校验功能集成到每个独立的API服务中去,而应该在网关做统一处理,然后通过认证中心去统一认证,这样才是优雅微服务权限解决方案!

项目源码地址

https://github.com/macrozheng/springcloud-learning/tree/master/micro-oauth2

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 macrozheng 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
史上最全的黑苹果系统「MacOS」安装教程,小白也能秒掌握!
折腾过的人应该不陌生,自从苹果采用 Intel 的处理器,被解锁后可以安装在 Intel CPU 与部分 AMD CPU 的机器上。从而出现了一大批非苹果设备而使用苹果操作系统的机器,被称为黑苹果(Hackintosh)。
全栈程序员站长
2022/07/01
17.4K0
史上最全的黑苹果系统「MacOS」安装教程,小白也能秒掌握!
系统安装部署系列教程(三):VHD方式安装系统
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/u011054333/article/details/89762084
乐百川
2019/07/02
4.6K0
系统安装部署系列教程(三):VHD方式安装系统
超详细黑苹果安装图文教程送EFI配置合集及系统
安装mac系统最重要的就是找到与你的电脑合适的EFI配置(文末提供下载 总有你的一款配置)
互扯程序
2019/03/08
40.4K13
超详细黑苹果安装图文教程送EFI配置合集及系统
黑苹果MacOS Big Sur 11.0 安装教程及驱动工具
最新黑苹果MacOS Big Sur 11.0安装教程,附带各电脑EFI驱动合集、原版引导镜像,图文并茂简单易懂…
全栈程序员站长
2022/09/07
7K0
黑苹果MacOS Big Sur 11.0 安装教程及驱动工具
最新版黑苹果MacOS 10.14 Mojave安装教程
下载链接:https://pan.baidu.com/s/1sk6tYbCZ0riy0I6Vasagwg 提取码:whcw
全栈程序员站长
2022/07/01
6.1K0
最新版黑苹果MacOS 10.14 Mojave安装教程
黑苹果折腾手记(二),安装过程
我们安装软件都有一种不停按下一步而不看内容的心理,我第一次安装黑苹果就是败在这里了,在标题为安装摘要的窗口里面,下一步就会开始安装,这个时候其实窗口左下角有一个按钮“自定”,这里是用于选择安装时候附带的软件包的,包括引导程序的选择、显卡声卡网卡的驱动选择,这里面就驱动部分要仔细选一下,例如我显卡选的Natit的驱动,声卡VoodooHDA0.2.6(后来发现这样还是没声音,后面进去系统之后再装了另外一个东西才行),以太网卡RTL8169。还有个值得一提的地方就是PS/2键盘,后面我选了Voodoo PS2(默认是没有选PS/2键盘的)。我是笔记本电脑,我第一次没有“自定”安装的时候就检测不到键盘,我就奇怪了这键盘还得驱动,其实还真要,USB键盘和PS/2键盘有点不一样。
horsley
2022/08/16
1.8K0
黑苹果安装详细过程
此教程仅用于初入黑苹果的小白学习交流经验,每个人的环境配置不同,不能一概而论,如若安装过程出现任何意外将与本人无关。鉴于网上有很多大佬写的教程,但以我的角度来看(才识浅薄),有些细节并没有提到,不懂得话会比较懵,所以才有了写这篇的想法。第一次写,请多指教,有写错的地方还请各路大神指正,老鸟看看就好,勿喷(感谢)
全栈程序员站长
2022/07/01
2.3K0
黑苹果安装详细过程
黑苹果安装手记(一)
自从苹果的电脑采用了Intel的处理器,苹果的系统被黑客破解之后,能安装在Intel CPU与部分AMD CPU上,从而就出现了一大批非苹果电脑的设备,而使用苹果操作系统的机器。这一类就被称为黑苹果(Hackintosh)。简单的说,就是在非苹果电脑上,安装的苹果系统。
简单并不简单
2019/12/17
4.2K0
黑苹果安装手记(一)
安装win10+黑苹果双系统零基础教程
镜像链接迅雷资源https://mirrors.dtops.cc/iso/MacOS/daliansky_macos/macOS%20Catalina%2010.15.4%2819E287%29%20Installer%20for%20Clover%205109%20and%20WEPE%20Support%20UEFI%20and%20MBR.dmg
全栈程序员站长
2022/08/12
3.5K0
安装win10+黑苹果双系统零基础教程
黑苹果的历史
点击上方蓝色“程序猿DD”,选择“设为星标” 回复“资源”获取独家整理的学习资料! 来源 | 公众号「云原生实验室」 楔子:第一台“黑苹果” 如果按照“黑苹果”的定义 —— 在一台没有苹果 Logo 的电脑上运行苹果公司开发的操作系统 —— 那么全世界第一台“黑苹果”应该诞生于 24 年前。1996 年,苹果将 Macintosh 电脑切换到 IBM 的 PowerPC 架构。时任苹果 CEO Gil Amelio 借此机会,与一些使用和 Macintosh 同款 CPU 和主板的厂商(如摩托罗拉)签约,
程序猿DD
2023/04/04
2.2K0
黑苹果的历史
win10+黑苹果 单硬盘 双系统 超简单安装 一看就会「建议收藏」
注意:此教程全机型通用 ,只需要替换相关的efi文件即可。安装黑苹果的教程已经很多了,本人学的皮毛只适合跟我配置差不多的笔记本电脑,比如神州系列啥的。如果本文出现任何问题请及时指正,谢谢。 电脑型号 Notebook W65KJ1_KK1 笔记本电脑 (扫描时间:2019年11月23日) 操作系统 Windows 10 专业版 64位 ( DirectX 12 ) 处理器 英特尔 Core i3-8100 @ 3.60GHz 四核 主板 蓝天(CLEVO) 主板 ( 100 Series/C230 Series 芯片组 Family – A144 ) 内存 8 GB ( 英睿达 DDR4 2400MHz ) 主硬盘 日立 HGST HTS721010A9E630 ( 1 TB / 7200 转/分 ) 显卡 Nvidia GeForce GTX 1050 Ti ( 4 GB ) 显示器 友达 AUO60ED ( 15.5 英寸 ) 声卡 瑞昱 ALC269 @ 英特尔 High Definition Audio 控制器 网卡 瑞昱 RTL8168/8111/8112 Gigabit Ethernet Controller / 蓝天(CLEVO)
全栈程序员站长
2022/08/30
13.7K0
win10+黑苹果 单硬盘 双系统 超简单安装 一看就会「建议收藏」
【电脑配置】开发人员必备,黑苹果双系统安装教程
(1)首先我们准备一个8~16G的U盘,在百度搜TransMac下载一个苹果系统U盘制作工具,点击第二个。如图所示▼
全栈程序员站长
2022/09/12
4.8K0
【电脑配置】开发人员必备,黑苹果双系统安装教程
黑苹果,你准备好了吗
黑苹果、是把苹果公司出品的macOS操作系统在x86架构的非苹果电脑上运行的黑客协作计划。此计划的构思始于2005年6月的苹果全球开发者大会(WWDC 2005),当时苹果宣布他们将把其个人电脑从PowerPC架构转向英特尔架构。
海哥@开发
2022/04/06
1.3K0
黑苹果,你准备好了吗
Win7 U盘安装Ubuntu16.04 双系统详细教程
http://blog.sciencenet.cn/blog-3027933-956284.html
bear_fish
2018/09/19
7.8K0
Win7 U盘安装Ubuntu16.04 双系统详细教程
黑苹果安装教程(二)--入门引导
我可以很自信的告诉大家,黑苹果系统可以较好地兼容(支持)目前主流的硬件。但是每年刚更新换代出来的新硬件,可能在短时间内没有驱动。你只有等到苹果公司自己支持这个硬件,或者幸运的有哪位大神(组织)自己在原来的基础上改写了驱动,你一样可以使用,前提是你能弄到!
Bess Croft
2020/04/02
2.1K0
浅谈 Mac 黑苹果 Hackintosh 安装使用
这次我们聊下 MacOS,因为最近给笔记本(intel/nvidia)和台式机(amd/ati)吃上了黑苹果,也就是用上了 Mac OS 苹果电脑系统。很久以前就想过搞个 mac 玩一下,那时候没那个精力去搞事(其实还是懒)简单弄了个虚拟机苹果玩了下,体验极差!后来一想干脆算了,可能最后苹果吃不成还把现有系统搭进去都有可能hhh?.. 所以后面一直没搞过,win10随着时间的迭代也逐渐完善起来之后就更没有上苹果的想法了嗯。
2Broear
2024/03/12
3340
浅谈 Mac 黑苹果 Hackintosh 安装使用
黑苹果基础(二)
众所周知,搞机容易系统容易崩,如果没有一个PE则可能会陷入困境,所以PE这个还是非常有必要的。一般来说,如果你写入的是黑果小兵打包的系统镜像则一般带有WEPE,用DiskGenius分区软件则可以看到。有PE的可以跳过这看下面了。
GOOPHER
2022/03/31
2.8K0
黑苹果基础(二)
黑苹果完整安装教程,内含后续系统优化「建议收藏」
这类主讲装双系统,VM虚拟机参考博客https://www.jianshu.com/p/5f10473f9047 虚拟机下载:https://www.vmware.com/go/getworkstation-win 秘钥:YG5H2-ANZ0H-M8ERY-TXZZZ-YKRV
全栈程序员站长
2022/08/28
7.9K0
黑苹果完整安装教程,内含后续系统优化「建议收藏」
杂项-黑苹果安装教程「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/138553.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/23
5.2K0
Mac苹果电脑安装Windows系列系统
描述:苹果电脑安装Windows系统是一部分人的想法(实际上不建议,发挥不出Mac笔记本的实际功能与效率); 但是苹果公司为了让Mac进入广阔的市场,开发了Bootcamp用Mac的应用帮助引导windows系统;
全栈工程师修炼指南
2020/10/26
3.6K0
Mac苹果电脑安装Windows系列系统
推荐阅读
相关推荐
史上最全的黑苹果系统「MacOS」安装教程,小白也能秒掌握!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验