Spring Security OAuth2 完全解析 (流程/原理/实战定制) —— Client / ResourceServer 篇

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475

一、前言

本文假设读者对 Spring Security 本身原理有一定程度的了解,假设对 OAuth2 规范流程、Jwt 有基础了解,以此来对 SpringSecurity 整合 OAuth2 有个快速全面的认识。
(关于总体流程,若对SS实在不熟悉可以简单理解为:Filter构造Authentication-> Provider认证并填充-> 设置到SecurityContext -> 而后用于Filter/AOP鉴权)

要了解一个SpringSecurity模块,就是了解它如何身份认证、如何自定义、(至于如何鉴权是SpringSecurity通用部分),对应到代码就是:背后的相关 Configurer、Filter、Authentication、Provider。

本文以最新Spring Boot版本2.6.2 以授权码模式梳理;涉及源码太多,就不放源码对照了,可以自行fork查看;斜体表示可配置自定义替换的部分

  • 第一部分:先演示默认配置下 spring-boot-starter-oauth2-client 所带来的流程和效果,建立大概认知。对应代码 thirdpart-login 项目
  • 第二部分:全面解析 oauth2login、oauth2client 原理。
  • 第三部分:常见业务下我们自己用户系统也有token分发需求,因此也解读下提供JWT服务的 oauth2ResourceServer 模块
  • 第四部分:综上所述,实战定制SpringSecurity OAuth2。对应代码 thirdpart-login-custom

二、默认 spring-boot-starter-oauth2-client 效果预览

OAuth2ClientAutoConfiguration自动配置类引入的默认配置,可由代码 thirdpart-login 复现。

  1. 后端在 .yml 配置中做好相关配置
    Spring Security OAuth2 完全解析 (流程/原理/实战定制) —— Client / ResourceServer 篇_第1张图片
  2. 访问受限资源"/user",后端鉴权异常后,由LoginUrlAuthenticationEntryPoint重定向到登录页。
  3. 登录页则由DefaultLoginPageGeneratingFilter根据相关配置自动构造页面String返回。
    Spring Security OAuth2 完全解析 (流程/原理/实战定制) —— Client / ResourceServer 篇_第2张图片
  4. 页面点击发出授权请求。
    后端OAuth2AuthorizationRequestRedirectFilter匹配响应该模板路径,返回实际授权码请求的重定向响应,转入三方授权页面:
    Spring Security OAuth2 完全解析 (流程/原理/实战定制) —— Client / ResourceServer 篇_第3张图片
  5. 同意授权后,Gitee会向游览器返回重定向响应。
    游览器向 “redirect-uri” 发起访问,此时被后端OAuth2LoginAuthenticationFilter匹配处理,其会用请求携带的 code 向配置的 “token-

你可能感兴趣的:(python,spring,java,后端,计算机)