Spring Security OAuth专题学习-资源服务源码解读

本文深入探讨Spring Security OAuth的资源服务,解析源码,涉及EnableResourceServer、ResourceServerConfiguration、ResourceServerConfigurer、ResourceServerSecurityConfigurer等关键组件。文章详细阐述了资源服务如何验证Token有效性和权限充分性,以及OAuth2AuthenticationProcessingFilter的工作流程。
摘要由CSDN通过智能技术生成

通过Spring Security OAuth专题学习的前面四篇文章(Spring Security OAuth专题学习),对于Spring Security OAUth的基本使用已经有了一些基本的概念。
然而对于资源服务及授权服务生效原理,仍旧一无所知。接下来将从源码层面对Spring Security OAuth相关组件进行分析与学习。

Spring Security OAuth中,资源服务主要完成两个核心功能:一是调用授权服务的接口完成Token有效性验证; 二是调用Spring Security的拦截器完成权限充分性
验证(如当前用户是否具有当前请求所需要的权限)。Token有效性检查由其所引入的Filter来完成验证; 而权限充分性验证由标准Spring Security的功能完成。

主处理流程如下:

Created with Raphaël 2.2.0 开始 Token检查 Token有效? 权限足够? 业务处理 End 抛出异常 yes no yes no

下面来进行具体分析。

0. 配置:

通过专题前面系列的文章,可以知道资源服务器相对于普通应用来说主要有两处需要配置:

  • 通过EnableResourceServer启用资源服务;
  • 通过ResourceServerConfigurer完成对资源服务的相关配置;

下文中,统一将实现ResourceServerConfigurer接口的类称为用户自定义的资源服务器配置类,简称用户自定义配置类;以与ResourceServerSecurityConfigurer
区分; 后者是资源与Security关联的配置信息集合,在下文中简称资源服务配置类,具体说明见后文。

1. 入口:EnableResourceServer

资源服务应用需要使用EnableResourceServer注解来完成相关配置的引入。

定义如下:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import(ResourceServerConfiguration.class)
public @interface EnableResourceServer {
   

}

它所做的事情,就是引入了一个WebSecurityConfigurerAdapter的子类(ResourceServerConfiguration),通过这个配置类来完成资源及请求授权控制相关配置。

WebSecurityConfigurerAdapter是标准Spring Security的一个对Spring Security Filter进行配置的类,可用于配置对请求路径的授权等。
Spring Security中,关于Configuration有两类类,一类是** Configurer这种叫法的,一种是** Configuration这种叫法的;前者一般是对某一对象进行配置的类,如对WebSecurity或者是HttpSecurity对象进行配置;后者指一些配置项的集合或者入口。

2. ResourceServerConfiguration

定义如下:

@Configuration
public class ResourceServerConfiguration extends WebSecurityConfigurerAdapter implements Ordered

它继承自WebSecurityConfigurerAdapter,而这个类正好是标准Spring Security中的配置抽象类!Resource Server通过它与Spring Security实现关联。

ResourceServerConfiguration中主要方法是configure方法,处理流程如下:

Created with Raphaël 2.2.0
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值