Spring Cloud OAuth2 資源服務器CheckToken 源碼解析

## CheckToken的目的
當用戶攜帶token 請求資源服務器的資源時, OAuth2AuthenticationProcessingFilter 攔截token,進行token 和userdetails 過程,把無狀態的token 轉化成用戶信息。

## 詳解

  1. OAuth2AuthenticationManager.authenticate(),filter執行判斷的入口

  1. 當用戶攜帶token 去請求微服務模塊,被資源服務器攔截調用RemoteTokenServices.loadAuthentication ,執行所謂的check-token過程。

源碼如下

  1. CheckToken 處理邏輯很簡單,就是調用redisTokenStore 查詢token的合法性,及其返回用戶的部分信息 (username )

  1. 繼續看 返回給 RemoteTokenServices.loadAuthentication 最後一句
    tokenConverter.extractAuthentication 解析組裝服務端返回的信息


最重要的 userTokenConverter.extractAuthentication(map);

  1. 最重要的一步,是否判斷是否有userDetailsService實現,如果有 的話去查根據 返回的

username 查詢一次全部的用戶信息,沒有實現直接返回username,這也是很多時候問的爲什麼只能查詢到username 也就是 EnablePigxResourceServer.details true 和false 的區別。

  1. 那根據的你問題,繼續看 UerDetailsServiceImpl.loadUserByUsername 根據用戶名去換取用戶全部信息。

關於pig

基於Spring Cloud、oAuth2.0開發基於Vue前後分離的開發平臺,支持賬號、短信、SSO等多種登錄,提供配套視頻開發教程。
https://gitee.com/log4j/pig

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章