上一篇我们初次体验了Spring Authorization Server,很多粉丝都希望对这个新授权框架有进一步了解。所以今天我们再进一步再从配置上来了解和OAuth2.0授权服务器相关的过滤器,进而对Spring Authorization Server的整个体系结构作进一步了解。还请多多点赞、转发、再看,这是对胖哥的最大鼓励。

Spring Security的模块化配置

在开始之前,我们先来回顾一下上一篇中提到OAuth2.0 ClientResource ServerAuthorization Server目前已经在Spring Security体系中模块化了。那么它们是如何做到灵活的模块化的呢?经过对配置的分析我发现了下面的几个相同点。

这是OAuth2.0 Client的核心配置类:

public final class OAuth2ClientConfigurer<B extends HttpSecurityBuilder<B>>extends AbstractHttpConfigurer<OAuth2ClientConfigurer<B>, B> {// 省略
}

这是OAuth2.0 Resource Server的核心配置类:

public final class OAuth2ResourceServerConfigurer<H extends HttpSecurityBuilder<H>>extends AbstractHttpConfigurer<OAuth2ResourceServerConfigurer<H>, H> {// 省略
}

这是OAuth2.0 Authorization Server的核心配置类:

public final class OAuth2AuthorizationServerConfigurer<H extends HttpSecurityBuilder<H>>extends AbstractHttpConfigurer<OAuth2AuthorizationServerConfigurer<H>, H> {// 省略
}

它们的配置类都继承了AbstractHttpConfigurer<T>,并最终由HttpSecurityapply(C configurer)将这些配置加载到Spring Security中。

该机制对你有什么启发?是不是可以实现一些自定义功能配置呢?

Spring Authorization Server的过滤器

基于0.2.0版本。

在DEMO中Spring Authorization Server通过下面的默认配置引入授权服务器相关功能:

@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception {// Authorization Server 默认配置OAuth2AuthorizationServerConfiguration.applyDefaultSecurity(http);return http.formLogin(Customizer.withDefaults()).build();
}

这里会构建一个独立的SecurityFilterChain来载入授权服务器的配置,之所以会说是独立的,是因为HttpSecurity是基于原型(@Scope("prototype"))注入Spring IoC的。然后相关的请求会被该过滤器链所处理。

OAuth2AuthorizationServerConfigurer

这个类是负责配置Spring Authorization Server过滤器链SecurityFilterChain的。它负责授权服务器所有相关过滤器的配置和初始化。其中四个过滤器可以通过各自的Configurer来灵活的自定义,这里列举一下。

OAuth2ClientAuthenticationConfigurer

该配置类用来配置OAuth2ClientAuthenticationFilter,这个过滤器用来处理OAuth2.0 Client身份验证请求,用来查询OAuth2.0 Client的注册信息OAuth2ClientAuthenticationToken。以下三个端点都会被该过滤器拦截:

  • /oauth2/token 获取令牌端点。

  • /oauth2/introspect 令牌自省端点。

  • /oauth2/revoke 令牌废除端点。

OAuth2AuthorizationEndpointConfigurer

该配置类用来配置OAuth2AuthorizationEndpointFilter,这个过滤器用来处理OAuth 2.0 Authorization Code Grant授权请求/oauth2/authorize,包含用户二次确认(Consent)逻辑。

OAuth2TokenEndpointConfigurer

该配置类用来配置OAuth2TokenEndpointFilter,这个过滤器用来处理/oauth2/token端点请求,管理管理OAuth2.0 令牌的生命周期。

OidcConfigurer

该配置类用来提供对OIDC协议的支持。有两个过滤器。

  • OidcClientRegistrationEndpointFilter,用来处理/connect/register端点请求,实现 OpenID Connect 1.0 动态客户端注册请求。

  • OidcProviderConfigurationEndpointFilter,通过/.well-known/openid-configuration端点提供OIDC Provider的元配置信息。

你可以在上一个DEMO中调用http://localhost:9000/.well-known/openid-configuration,试试看有什么效果。

其它过滤器

除了上面几个可以通过各自的Configurer可以灵活的配置对应的过滤器外。还有一些目前不可开放配置的过滤器。

  • OAuth2TokenIntrospectionEndpointFilter ,用来处理/oauth2/introspect 令牌自省逻辑。

  • OAuth2TokenRevocationEndpointFilter,用来处理令牌废除逻辑

  • NimbusJwkSetEndpointFilter,用来处理JWK信息URI端点/oauth2/jwks的逻辑。

  • OAuth2AuthorizationServerMetadataEndpointFilter,用来提供OAuth2.0授权服务器元数据访问端点/.well-known/oauth-authorization-server的逻辑。你也可以通过上一个DEMO中调用http://localhost:9000/.well-known/oauth-authorization-server来试试看有什么效果。

总结

以上就是目前Spring Authorization Server涉及的所有服务器端点,通过上一文提供的DEMO你也可以揣摩一下对应端点执行的过滤器逻辑。不过目前好像还没有用户信息UserInfo端点,根据Spring Authorization Server路线图,该端点会在下一个版本进行支持,到时候我们再进行补充。

推荐关注本文作者:码农小胖哥

分享高质量编程知识,探讨IT人生

技术干货,实战技巧,面试技巧,前沿资讯一个都不能少

授权服务框架Spring Authorization Server的过滤器链相关推荐

  1. 【spring authorization server系列教程】(一)入门系列,spring authorization server简介。快速构建一个授权服务器(基于最新版本0.3.0)

    系列文章目录 [spring authorization server系列教程](一)入门系列,快速构建一个授权服务器 文章目录 系列文章目录 前言 一.目前已实现的功能 二.入门,一步一步快速开始构 ...

  2. Spring Authorization Server入门 (三) 集成流程说明、细节补充和各种方式获取token测试

    1. Spring boot 与Spring authorization Server集成流程说明 1. 创建项目 2. 添加依赖 3. 初始化数据库(用户授权确认表.用户认证信息表和客户端信息表) ...

  3. 全新的Spring Authorization Server快速入门

    11月8日Spring官方已经强烈建议使用Spring Authorization Server替换已经过时的Spring Security OAuth2.0[1],距离Spring Security ...

  4. Spring官宣新家族成员:Spring Authorization Server!

    8月17日,Spring官方宣布 Spring Authorization Server 已正式脱离实验状态,并进入Spring-Project家族! 官方声明 此举恰逢本周的 0.2.0 版本发布, ...

  5. 前沿资讯|Spring Native 0.11.2、Spring Authorization Server 0.2.2 发布

    近日,Spring官方又更新了两个前沿内容,分别是Spring Native 0.11.2 和Spring Authorization Server 0.2.2 .下面一起来看看分别都更新了些什么. ...

  6. Spring 官方发起Spring Authorization Server 项目

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「小胖哥」 Spring官方在近日发布了 ...

  7. 【OAuth2】十六、Spring Authorization Server如何生成并发放token的

    这里写目录标题 前言 一.OAuth2TokenEndpointConfigurer 1.关于authenticationProvider和authenticationProviders自定义的注意 ...

  8. springcloud 微服务鉴权_Java微服务框架spring cloud

    Spring Cloud是什么 Spring Boot 让我们从繁琐的配置文件中解脱了出来,而 Spring Cloud,它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发, ...

  9. 微服务框架-Spring Cloud简介(一)

    Spring Cloud是一个微服务框架,相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案. Spring Cloud对微服务基础框架Netflix的多个开源组件进 ...

最新文章

  1. openoj的一个小比赛(F题解题报告)poj3978(dp+素数筛选)
  2. 1年内4次架构调整,谈Nice的服务端架构变迁之路--转
  3. SQL Server 和 MySql 语法和关键字的区别
  4. 工业界推荐系统实用分析技巧
  5. Linux 系统应用编程——网络编程(服务器模型)
  6. cplex安装_Excel软件规划求解工具的安装与功能介绍
  7. arm汇编指令WFI和WFE
  8. Ubuntu环境下的VirtualBox,连接Redhat虚拟机的步骤
  9. 为什么 1KB = 1024Byte???群里讨论。
  10. rabbitmq的发布订阅
  11. JavaScript -- Window-Resize
  12. (转)(全程图解)Axure RP8.0安装、破解、汉化教程
  13. 转:李开复:打造领导力,我的九点思考
  14. wps office应用计算机等级考试,全国计算机等级考试一级教程:计算机基础及WPS Office应用(2016年版)...
  15. Dubbo概述及架构图
  16. 在线机器学习Topic推荐-AMiner
  17. Office2016 打开excel出现丢失appvisvsubsystems32.dll
  18. vue简单的数字滚动动画
  19. ISO Country Code - 标准国家码
  20. 广联达bim5d手机端_广联达bim5d官网版下载

热门文章

  1. 如何在Visual Studio中直接使用示例代码浏览器搜索下载和管理代码示例
  2. DELL optiplex 解决改回 AHCI蓝屏问题
  3. 一台机器上启动多个tomcat
  4. Comparable接口和Comparator接口
  5. linux docker 指定容器工作目录
  6. linux gcc 静态编译 减小体积
  7. python3 dict 字典 转 严格 json
  8. mysql 查询日志介绍
  9. linux 内核模块加载错误 disagree about version of symbol module_layout
  10. golang 函数定义