Spring Security 實戰干貨:OAuth2授權回調的處理機制


1. 前言

上一文着重講了當用戶發起第三方授權請求是如何初始化OAuth2AuthorizationRequest授權請求對象以及如何通過過濾器進行轉發到第三方的。今天我們接着這個流程往下走,來看看服務器收到授權請求是怎么做的。

2. OAuth2登錄認證

當第三方收到OAuth2授權請求后,會將授權的回執通過我方提供的回調請求redirect_uri傳遞給我們。由於默認情況下回調的路徑滿足/login/oauth2/code/*,所以我們只要找到攔截回調的過濾器就可以知道Spring Security是如何處理回調了。通過搜索確認了OAuth2LoginAuthenticationFilter就是處理回調的過濾器。

OAuth2LoginAuthenticationFilter

第三方認證服務器在調用redirect_uri時附加codestate參數,在被這個Filter攔截后,創建一個待認證憑據OAuth2LoginAuthenticationToken,並委托給了AuthenticationManager進行身份驗證。

一旦成功驗證,則生成認證憑據OAuth2AuthenticationToken和認證客戶端對象OAuth2AuthorizedClient。 最后, OAuth2AuthenticationToken返回,並最終存儲在SecurityContextRepository完成認證處理;而OAuth2AuthorizedClient被保存到OAuth2AuthorizedClientRepository。流程圖如下:

OAuth2LoginAuthenticationFilter執行流程

這個過濾器和UsernamePasswordAuthenticationFilter一樣繼承了AbstractAuthenticationProcessingFilter,流程有相像的地方。

3. 總結

當第三方授權后會通過回調來通知客戶端,而客戶端收到回調通知后會對授權結果進行認證操作才能表明這一套流程是合規的。而這個流程是由過濾器OAuth2LoginAuthenticationFilter來控制的。今天對其流程進行了圖解,其中的認證過程還是一個未解之謎,鎖定:碼農小胖哥 ,這個答案會在系列的下一篇為你揭曉。

關注公眾號:Felordcn 獲取更多資訊

個人博客:https://felord.cn


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM