Spring Security OAuth2 主要兩部分功能:1、生成token,2、驗證token,最大概的流程進行了一次梳理
1、Server端生成token (post /oauth/token)
AuthorizationServerSecurityConfigurer 在配置階段 如果允許form表單提交則會經過ClientCredentialsTokenEndpointFilter, 剩下的流程可以總結為生成token、存儲token。
生成token:按類型生成token,類型與oauth2四種類型(密碼、授權碼、客戶端、簡化)模式相對 存儲token: 支持 內存、redis、數據庫、等多種方式
2、Resource端驗證token (訪問受限接口)
ResourceSecurityConfigurer在配置階段,對Resource進行配置, OAuth2核心過濾器 OAuth2AuthenticationProcessingFilter, 如果請求中存在token 則進行驗證,如果不存在則不驗證(但是Spring Security會對接口權限進行驗證)。
存在token流程:
根據 配置的userInfoEndpointUrl 到 server獲取token的授權信息 OAuthAuthentication。
根據返回結果判斷token是否有效(如果返回結果結果中存在error表明訪問限制: 也就是說server對token無效的處理后,一定要返回非 200的http響應Resource才能認定無效)