網頁

2019/10/20

Spring Security 什麼是 UsernamePasswordAuthenticationToken

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()兩個方法,分別用來取得裝載的PrincipleCredentials,也就是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實例。





參考:

沒有留言:

張貼留言