Spring Security OAuth2.0(18):资源服务测试
本章代码已分享至Gitee:https://gitee.com/lengcz/distributed-security01.git文章目录资源服务器配置编写资源配置资源服务验证token添加安全访问控制查看令牌权限问题资源服务器配置EnableResourceServer注解到一个Configuration配置类上并且必须使用ResourceServerConfigurer这个配置对象来进行配置(可以选择继承自ResourceServerConfigurerAdapter然后覆写其中的方法参数就是这个对象的实例下面是一些可以配置的属性ResourceServerSecurityConfigurer中主要包括tokenServices: ResourceServerTokenServices类的实例用来实现令牌服务。tokenStore:TokenStore类的实例指定令牌如何访问与tokenServices配置可选resourceId这个资源服务的ID这个属性是可选的但是推荐设置并在授权服务中进行验证。其他的扩展属性例如tokenExtrator令牌提取器用来提取请求中的令牌。HttpSecurity配置这个与Spring Security 类似请求匹配器用来设置需要进行保护的资源路径默认的情况下是保护资源服务的全部路径。通过http.authorizeRequests()来设置受保护的访问规则其他的自定义权限保护规则通过HttpSecurity来进行配置。EnableResourceServer 注解自动增加了一个类型为OAuth2AuthenticationProcessingFilter的过滤器链。编写资源在order模块下创一个资源RestControllerpublicclassOrderController{GetMapping(r1)PreAuthorize(hasAnyAuthority(p1))// 拥有p1权限可以访问此资源publicStringr1(){return资源1;}}配置资源服务在order模块下创建配置 ResourceServerConfigpackagecom.it2.security.distributed.order.config;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.security.config.annotation.web.builders.HttpSecurity;importorg.springframework.security.config.http.SessionCreationPolicy;importorg.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;importorg.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;importorg.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer;importorg.springframework.security.oauth2.provider.token.RemoteTokenServices;importorg.springframework.security.oauth2.provider.token.ResourceServerTokenServices;ConfigurationEnableResourceServerpublicclassResourceServerConfigextendsResourceServerConfigurerAdapter{publicstaticfinalStringRESOURCE_IDres1;Overridepublicvoidconfigure(ResourceServerSecurityConfigurerresources)throwsException{resources.resourceId(RESOURCE_ID)//资源id.tokenServices(tokenService())//验证令牌的服务.stateless(true);}Overridepublicvoidconfigure(HttpSecurityhttp)throwsException{http.authorizeRequests().antMatchers(/**).access(#oauth2.hasScope(all)).and().csrf().disable().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);}}验证tokenResourceServerTokenServices 是组成授权服务的另一半如果你的授权服务器和资源服务在同一个应用程序的话你可以使用DefaultTokenServices这样的话你就不用考虑关于实现所有必要接口的接口的一致性问题。如果你的资源服务器是分离开的那么你就需必须确保能够有匹配授权服务提供的ResourceServerTokenServices它知道如何对令牌进行解码。令牌解析方法使用DefaultTokenServices 在资源服务器本地配置令牌存储解码解析方式使用RemoteTokenServices 资源服务器通过HTTP 请求来解码令牌每次都请求授权服务器端点/oauth/check_token使用授权服务的/oauth/check_token 端点你需要在授权服务将这个端点暴露出去以便资源服务可以进行访问这在授权服务配置中提到过下面是一个例子已经在授权中配置了 /oauth/check_token和/oauth/token_key这两个端点Overridepublicvoidconfigure(AuthorizationServerSecurityConfigurersecurity)throwsException{security.tokenKeyAccess(permitAll())//oauth/token_key 公开.checkTokenAccess(permitAll())//oauth/check_token 公开.allowFormAuthenticationForClients();//表单认证申请令牌}添加安全访问控制*必须配置HttpSecurity ,否则会导致没有该资源权限也能访问。在order的config下添加安全访问控制importorg.springframework.context.annotation.Configuration;importorg.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;importorg.springframework.security.config.annotation.web.builders.HttpSecurity;importorg.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;ConfigurationEnableGlobalMethodSecurity(securedEnabledtrue,prePostEnabledtrue)//开启不同的方法权限注解publicclassWebSecurityConfigextendsWebSecurityConfigurerAdapter{//配置安全拦截机制protectedvoidconfigure(HttpSecuritysecurity)throwsException{security.csrf().disable().authorizeRequests().antMatchers(/r/**).authenticated()//所有的/r/**的请求必须认证通过.anyRequest().permitAll();//除此之外的请求都可以访问}}查看令牌权限http://localhost:53020/uaa/oauth/check_token问题这种方式的缺点每次请求进行鉴权时都需要请求远程接口请求量大时这种网络请求将会占用大量网络资源。

相关新闻

力学测试数据离散大?几款实用结构专利标准化检测流程

力学测试数据离散大?几款实用结构专利标准化检测流程

不少质检人员在做材料拉伸、抗渗、静液压耐压测试时,经常遇到同一批次试样测试结果差距悬殊,排除原料、操作手法问题后,依然无法稳定得到统一数据,和客户送检数据出现偏差,产生品质争议。出现该问题的核心原因是传统力…

2026/7/19 15:43:15阅读更多 →
static_status部署指南:在Linux服务器上设置自动化状态监控

static_status部署指南:在Linux服务器上设置自动化状态监控

static_status部署指南:在Linux服务器上设置自动化状态监控 【免费下载链接】static_status 🚦Bash script to generate a static status page. 项目地址: https://gitcode.com/gh_mirrors/st/static_status static_status是一款强大的Bash脚本工…

2026/7/19 15:43:15阅读更多 →
qiankun 微前端架构落地方案(详细操作文档)

qiankun 微前端架构落地方案(详细操作文档)

目录 方案概述 项目现状分析 架构设计 详细操作步骤 阶段一:主应用搭建(基座) 阶段二:存量应用改造为子应用 阶段三:新模块用 Vue3 开发为子应用 阶段四:应用间通信 阶段五:公共依赖提取与共享 阶段六:部署与 CI/CD 迁移策略与优先级 常见问题 FAQ 迁移检查清单 1. 方案…

2026/7/19 15:41:15阅读更多 →
2026毕业论文疑难全解|写作、查重、AI红标、开题翻车?一个工具全部搞定(全程免费)

2026毕业论文疑难全解|写作、查重、AI红标、开题翻车?一个工具全部搞定(全程免费)

写毕业论文、做毕业设计,大多数同学的崩溃不是不会写,而是问题太多、工具太散、处处受限。 写初稿没思路、重复率居高不下,改完查重又爆出AI红标,开题反复被导师打回,格式排版漏洞百出,数据分析空洞无内容…

2026/7/20 16:38:18阅读更多 →
揭秘现代公安资产管理:从一张桌椅到全网追踪的科技变革

揭秘现代公安资产管理:从一张桌椅到全网追踪的科技变革

想象一下这样的场景:某市公安局下辖几十个派出所、上百个执勤点,固定资产数以万计,大到特种车辆、通讯设备,小到一台打印机、一把办公座椅。年底盘点,资产管理员小王和同事们需要连续半个月加班加点,拿着厚…

2026/7/20 16:38:18阅读更多 →
2025年Python开发者必学的5个高效库

2025年Python开发者必学的5个高效库

1. 为什么2025年Python开发者必须关注这5个库?Python生态系统的繁荣程度已经远超其他编程语言。截至2024年,PyPI(Python Package Index)上已有超过84万个项目,每年新增库的数量以20%的速度增长。在这个快速发展的环境中…

2026/7/20 16:38:18阅读更多 →
5步掌握超星学习通自动化签到:从零到精通的完整实践指南

5步掌握超星学习通自动化签到:从零到精通的完整实践指南

5步掌握超星学习通自动化签到:从零到精通的完整实践指南 【免费下载链接】chaoxing-sign-cli 超星学习通签到:支持普通签到、拍照签到、手势签到、位置签到、二维码签到,支持自动监测、QQ机器人签到与推送。 项目地址: https://gitcode.com…

2026/7/20 16:38:18阅读更多 →
OData.NET URI解析器详解:掌握复杂查询和过滤语法

OData.NET URI解析器详解:掌握复杂查询和过滤语法

OData.NET URI解析器详解:掌握复杂查询和过滤语法 【免费下载链接】odata.net ODataLib: Open Data Protocol - .NET Libraries and Frameworks 项目地址: https://gitcode.com/gh_mirrors/od/odata.net OData.NET URI解析器是ODataLib(Open Data…

2026/7/20 16:38:18阅读更多 →
跨平台赛博朋克终端美化:Cyberpunk Neon主题终极配置指南

跨平台赛博朋克终端美化:Cyberpunk Neon主题终极配置指南

跨平台赛博朋克终端美化:Cyberpunk Neon主题终极配置指南 【免费下载链接】Cyberpunk-Neon Cyberpunk Neon Themes for KDE Plasma, GTK, Telegram, Tilix, Vim, Zim and more. 项目地址: https://gitcode.com/gh_mirrors/cy/Cyberpunk-Neon Cyberpunk Neon是…

2026/7/20 16:36:18阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/20 0:50:54阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/20 0:50:54阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/20 0:50:54阅读更多 →
2026 WAIC:努比亚二代“豆包手机”NaviX Ultra亮相,智能体验全面升级!

2026 WAIC:努比亚二代“豆包手机”NaviX Ultra亮相,智能体验全面升级!

7月18日智东西消息,在2026 WAIC期间,努比亚联合字节豆包打造的二代“豆包手机”努比亚NaviX Ultra首次亮相,相比一代有诸多升级。智能体手机理念中兴通讯终端事业部总裁、努比亚总裁倪飞表示,智能体手机要从人操作手机变为手机帮人…

2026/7/20 0:01:04阅读更多 →
努比亚NaviX Ultra亮相WAIC,智能体手机能否让用户生活更简单?

努比亚NaviX Ultra亮相WAIC,智能体手机能否让用户生活更简单?

努比亚NaviX Ultra:外观与功能双升级在2026 WAIC期间,首次亮相的努比亚NaviX Ultra吸引了众多目光。它是努比亚联合字节豆包打造的二代“豆包手机”,与一代努比亚M153相比,外观设计变化较大。其机身背部搭载横向排布的大尺寸影像模…

2026/7/20 0:01:04阅读更多 →
C# 将逗号分割的字符串转换为long,并添加到List<long>

C# 将逗号分割的字符串转换为long,并添加到List<long>

目录 方法1:使用Split和Convert.ToInt64 方法2:使用LINQ的Select和ToList 方法3:使用TryParse进行异常安全转换(推荐) 如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天…

2026/7/20 0:01:04阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/19 22:50:49阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/19 14:50:26阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/19 18:50:36阅读更多 →