
1. 前言
上一文著重講了當用戶發起第三方授權請求是如何初始化OAuth2AuthorizationRequest授權請求物件以及如何通過過濾器進行轉發到第三方的,今天我們接著這個流程往下走,來看看服務器收到授權請求是怎么做的,
2. OAuth2登錄認證
當第三方收到OAuth2授權請求后,會將授權的回執通過我方提供的回呼請求redirect_uri傳遞給我們,由于默認情況下回呼的路徑滿足/login/oauth2/code/*,所以我們只要找到攔截回呼的過濾器就可以知道Spring Security是如何處理回呼了,通過搜索確認了OAuth2LoginAuthenticationFilter就是處理回呼的過濾器,
OAuth2LoginAuthenticationFilter
第三方認證服務器在呼叫redirect_uri時附加code和state引數,在被這個Filter攔截后,創建一個待認證憑據OAuth2LoginAuthenticationToken,并委托給了AuthenticationManager進行身份驗證,
一旦成功驗證,則生成認證憑據OAuth2AuthenticationToken和認證客戶端物件OAuth2AuthorizedClient, 最后, OAuth2AuthenticationToken回傳,并最終存盤在SecurityContextRepository完成認證處理;而OAuth2AuthorizedClient被保存到OAuth2AuthorizedClientRepository,流程圖如下:

這個過濾器和
UsernamePasswordAuthenticationFilter一樣繼承了AbstractAuthenticationProcessingFilter,流程有相像的地方,
3. 總結
當第三方授權后會通過回呼來通知客戶端,而客戶端收到回呼通知后會對授權結果進行認證操作才能表明這一套流程是合規的,而這個流程是由過濾器OAuth2LoginAuthenticationFilter來控制的,今天對其流程進行了圖解,其中的認證程序還是一個未解之謎,鎖定:碼農小胖哥 ,這個答案會在系列的下一篇為你揭曉,
關注公眾號:Felordcn 獲取更多資訊
個人博客:https://felord.cn
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/221587.html
標籤:Java
