當前位置:編程學習大全網 - 源碼下載 - SpringSecurity Oauth2Authentication對象使用

SpringSecurity Oauth2Authentication對象使用

在調用資源服務器的過程中,我們會將申請的token 作為header值進行傳遞,攜帶調用者的身份信息。但是資源服務器是如何通過token對調用者的身份進行判斷的呢?

Security中有壹個Filter實現了對token信息的轉換,將token值轉換成了調用者的用戶信息。該filter就是 Oauth2AuthenticationProcessingFilter

壹、查看源碼

查看Oauth2AuthenticationProcessingFilter的doFilter方法

通過查看Oauth2AuthenticationProcessingFilter的dofilter方法,重點有兩點

(1)將request中的token提取出來封裝成Authentication對象

(2)將Authentication交給authenticationManager進行鑒權處理

下面我們重點看下這兩處的處理。

二、token到Authentication對象轉換實現

Authentication authentication = tokenExtractor .extract(request);

tokenExtractor在Oauth2AuthencationProcessingFilter中的默認實現是BearerTokenExtractor,我們查看BearerTokenExtractor的extract()方法。

三、Authentication對象的鑒權

Authentication authResult = authenticationManager .authenticate(authentication);

此處的authenticationManager的實現類是Oauth2AuthenticationManager,而不是我們之前壹直提到的ProvicerManager。我們看下Oauth2AuthenticationManager中的authenticate()方法。

RemoteTokenService loadAuthentication() 方法

用戶認證轉換類

* 接口層註入的 OAuth2Authentication對象中的 principal屬性即在該類的extractAuthentication() 方法中實現的。

* security默認使用的是 DefaultAccessTokenConverter類中的extractAuthentication()方法中使用。

* 通過繼承UserAuthenticationConverter該類,實現其中的extractAuthentication()方法來滿足我們自己構造 principal屬性的需求。

* 在ResourceConfig類中,繼續使用DefaultAccessTokenConverter,但是類中的UserAuthenticationConverter我們裏換成我們自己的CustomUserAuthenticationConverter實現類。

*

* 我們構造的principal屬性是map類,裏面包含phone和userId兩個字段。

  • 上一篇:軟件平臺有哪些?
  • 下一篇:jsp頁面通過Action裏的對象.屬性傳值 為什麽沒有穿過去
  • copyright 2024編程學習大全網