這篇文章之前我們介紹的是 Spring Boot + Spring Data 做出來的後端系統,接下來會介紹 Spring Boot + Spring Data 在結合 Spring Security 做到身分驗證的功能,這篇文章會先來介紹預計會用來當作身分驗證的方法 JWT
是一個用來提高後端安全性的工具,尤其是Java後端。他提供了一套全面的安全機制和工具,幫助開發人員保護後端應用程式免受各種安全威脅,確保了資料的機密性、完整性和可用性。
JWT 全名為 JSON Web Token,是一種基於 JSON 的開放標準(RFC 7519),JWT 會透過 HMAC、RSA、ECDS 等演算法進行加密,而 JWT 是以 Header、Payload、Signature 以Base64 做編碼,並且以 . 來做分開(例如: xxxxxx.yyyyyy.zzzzz )。
這邊附上一張圖來輔助解釋
首先看到左側 HTTP Request
這裡指的是用戶發送的指令
接著是 JWTAuthFillter
,在這裡我們會針對用戶傳送進來的Token
進行幾個階段的審核,從這個 Token 的組成是否符合我們設定的,再來解碼後的金鑰跟我們設定的是否相同等等,這些初步的檢查都沒問題就會再更進階驗證身分
JWTService
,在這裡我們會撰寫一些功能,內容主要都是在寫驗證的邏輯,比如「這個用戶的身分跟這個 Token 解析出來的身分是否相同」,如果都沒問題就代表通過認證,就可以接續下面的動作,反之在這裡只要任一個驗證有問題,就是直接返回錯誤
Security
,進到這裡就代表這個 Token 是完全合法也符合當前使用者的身分驗證,因此系統就會允許使用者的指令被執行,接著便會回傳正常功能的內容回到前端做顯示
本篇文章大略的介紹了 JWT 的運作方式,下篇文章開始我們會慢慢將整個系統完成,由於撰寫的複雜度變更難,因此會將每篇的步調變慢,盡量解釋清楚每個環節。