Spring Security的UsernamePasswordAuthenticationToken
的簡單說明如下。
UsernamePasswordAuthenticationToken
的作用就是代表一個被驗證的請求對象,並在通過驗證後裝載使用者完整資訊的對象,這些資訊包括使用者名稱(username),密碼(password),權限(authorities)等。
官方API的說明:
An
Authentication
implementation that is designed for simple presentation of a username and password.
也就是說UsernamePasswordAuthenticationToken
用來代表username及password,其實作了Authentication
。
UsernamePasswordAuthenticationToken
提供了getPrincipal()
與getCredentials()
兩個方法,分別用來取得裝載的Principle與Credentials,也就是username與password。
下圖為UsernamePasswordAuthenticationToken
的繼承關係。
UsernamePasswordAuthenticationToken
繼承了抽像類別AbstractAuthenticationToken
;
AbstractAuthenticationToken
實作了Authentication
介面;
Authentication
繼承了Principle
介面。
當驗證的請求送至Spring Security後,請求中的username與password會在UsernamePasswordAuthenticationFilter.attemptAuthentication(HttpServletRequest request, HttpServletResponse response)
中被放入UsernamePasswordAuthenticationToken
的實例,然後交給AuthenticationManager.authenticate(Authentication authentication)
進行驗證,而實際上最終是轉交給AuthenticationProvider.authenticate(Authentication authentication)
驗證;若驗證成功則會返回完整使用者資訊的Authentication
實例。
參考:
沒有留言:
張貼留言