Spring Cloud OAuth2 資源伺服器CheckToken 原始碼解析

冷冷gg發表於2019-01-25

CheckToken的目的

當使用者攜帶token 請求資源伺服器的資源時, OAuth2AuthenticationProcessingFilter 攔截token,進行token 和userdetails 過程,把無狀態的token 轉化成使用者資訊。

Spring Cloud OAuth2 資源伺服器CheckToken 原始碼解析

詳解

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

    Spring Cloud OAuth2 資源伺服器CheckToken 原始碼解析

  2. 當使用者攜帶token 去請求微服務模組,被資源伺服器攔截呼叫RemoteTokenServices.loadAuthentication ,執行所謂的check-token過程。 原始碼如下

    Spring Cloud OAuth2 資源伺服器CheckToken 原始碼解析

  3. CheckToken 處理邏輯很簡單,就是呼叫redisTokenStore 查詢token的合法性,及其返回使用者的部分資訊 (username )

Spring Cloud OAuth2 資源伺服器CheckToken 原始碼解析

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

Spring Cloud OAuth2 資源伺服器CheckToken 原始碼解析
最重要的 userTokenConverter.extractAuthentication(map);

  1. 最重要的一步,是否判斷是否有userDetailsService實現,如果有 的話去查根據 返回的 username 查詢一次全部的使用者資訊,沒有實現直接返回username,這也是很多時候問的為什麼只能查詢到username 也就是 EnablePigxResourceServer.details true 和false 的區別。

Spring Cloud OAuth2 資源伺服器CheckToken 原始碼解析

  1. 那根據的你問題,繼續看 UerDetailsServiceImpl.loadUserByUsername 根據使用者名稱去換取使用者全部資訊。
    Spring Cloud OAuth2 資源伺服器CheckToken 原始碼解析

關於pig

基於Spring Cloud、oAuth2.0開發基於Vue前後分離的開發平臺,支援賬號、簡訊、SSO等多種登入,提供配套視訊開發教程。
gitee.com/log4j/pig

相關文章