springCloud微服务系列——OAuth2+Basic验证

本文介绍了如何在SpringCloud微服务中结合OAuth2和Basic验证进行权限控制。通过理解@Order注解对过滤器链顺序的影响以及httpSecurity与authorizeRequests设置的差异,提出了解决方案,即分别为Basic验证、OAuth2验证服务器和OAuth2资源服务器创建不同的ConfigurerAdapter,并利用requestMatcher或antMatcher区分资源,确保Basic验证优先于OAuth2验证。
摘要由CSDN通过智能技术生成

目录

一、简介

二、知识点

@Order

httpSecurity与authorizeRequests设置的区别

三、解决方案


一、简介

    我们希望微服务通过OAuth2+jwt的模式进行验证,但是有些资源我们并不想通过OAuth2+jwt进行验证,比如访问swagger和actuator端点,这些资源我们希望进行Basic验证。

二、知识点

  • @Order

     spring security的验证是通过fliter链进行的,我们实现相应的ConfigurerAdapter就能自定义自己的fliter,我们通过@Order设置它在fliter链中的调用顺序。一般Basic验证应该先与其它验证

  • httpSecurity与authorizeRequests设置的区别

     我们先看如下代码有什么不同

http.requestMatcher(EndpointRequest.toAnyEndpoint())
http.antMatcher(SWAGGER_URL)

http.authorizeRequests().requestMatcher(EndpointRequest.toAnyEndpoint())
http.authorizeRequests().antMatcher(SWAGGER_URL)

      直接在http上定义,表明整个ConfigurerAdapter作用的资源。注意,这里requestMatcher和antMatcher只能传递一个参数。

      在authorizeRequests上定义,表明实际需要控制权限的资源,往往其后需要跟authenticated和permitAll方法。

三、解决方案

     有了以上知识点,解决方案也就很容易想出来了。Basic验证,OAuth2验证服务器,OAuth2资源服务器分别实现一个ConfigurerAdapter,通过在http上定义requestMatcher或antMatcher来进行区分资源。最后用@Order,把Basic验证的fliter设置在前面。

      Basic验证

@Order(1)
@Configuration
@EnableWebSecurity
public class ServerWebSecuri
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值