请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

微服务网关作为资源服务器配置permitAll的问题

老师好,我在实践微服务网关统一认证鉴权时对一块配置有疑问。OAuth2资源服务器是基于spring cloud新一代gateway网关来配置的。

有效的配置

首先对白名单api直接放行,其他所有访问都要先走授权管理器进行check,这个配置ok的:
图片描述
测试也ok,白名单里的api可以直接访问:
图片描述
而请求http://localhost:8065/api/article/personal/1则需要携带有效令牌才能访问,也ok:
图片描述

无效的配置

现在我只关心要认证和授权的api,其他通通都放行,因此我尝试做了如下的调整:
图片描述
但是,测试却发现需要授权的api不用携带令牌就能直接访问了:
图片描述

提出问题

我怀疑.anyExchange().permitAll()这段配置对上一行的配置进行了覆盖,如果我不考虑白名单,只想配置要拦截的api而其他的都放行,正确的配置应该怎么做?

正在回答 回答被采纳积分+3

1回答

接灰的电子产品 2022-12-05 23:58:22

没太明白,你的新配置里面只有放行没有配置需要认证授权的api 路径啊,所以 any request 都是 permit 啊

0 回复 有任何疑惑可以回复我~
  • 我的意思是我现在只配置了需要认证的一组url,除此之外的都permitAll,要怎么配置才生效,http.authorizeExchange().pathMatchers(一组要认证的url).access(authorizationManager).anyExchange().permitAll()这个配置跟我预期的不一样,要认证的url反而被permitAll了;我试着又学习了一个取反的匹配器,但是还是不行,不知道是不是我用法不对,老师帮我看下:http.authorizeExchange().matchers(new NegatedServerWebExchangeMatcher(ServerWebExchangeMatchers.pathMatchers(一组要认证的url))).permitAll().pathMatchers(一组要认证的url).access(authorizationManager)。
    我的问题应该跟这个类似:https://github.com/spring-projects/spring-security/issues/9706
    回复 有任何疑惑可以回复我~ 2022-12-06 00:11:47
  • 你的这个配置是写在哪里?是网关还是资源服务器?
    回复 有任何疑惑可以回复我~ 2022-12-07 17:12:08
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信