iT邦幫忙

2021 iThome 鐵人賽

DAY 4
1

我:同學你房間裡有這麼多好東西,都不怕被人拿走喔?
同學:拿走? 怎麼可能被拿走,防護措施我都設定好了!!
我: 什麼防護措施? 這麼有自信不怕被我破解?
同學: 我看你是完全不懂喔! 過來我跟你介紹一下


全名為 JSON Web Token

1.裡面的資訊已經包含使用者資訊(包括姓名、ID、權限),所以不需重新請求資料庫取得資料。
2.更符合設計 RESTful API 時「Stateless 無狀態」原則:意味著每一次從客戶端向伺服器端發出的請求都是獨立的,使用者經驗證後,在伺服器端不會將用戶驗證狀態透過 Session 儲存起來,因此每次客戶端發出的請求都將帶有伺服器端需要的所有資訊
3.因為有透過簽證產生,因此只要payload一被竄改驗證就會發現。

JWT的組成

1.header: 含 Token 的種類及產生簽章(signature)要使用的雜湊演算法
2.payload: 攜帶用戶資訊
3.signature: 編譯後的 Header、Payload 與密鑰透過雜湊演算法所產生

在我們要開始實作前,我們要先確定步驟和順序

1.Authentication: 使用者驗證,告訴API 你是誰。
2.Authorization: API會根據儲存的資料告訴你,你可以做什麼事情。
3.請求API網址取得資料。

Spring Security的架構圖,可以看出Security的底層其實是由很多Filter組成的

https://ithelp.ithome.com.tw/upload/images/20210919/20138857CbqCBX7Lt8.png

客製化Spring Security的驗證

AuthenticationProvider: 是Spring Boot 提供的驗證介面,他提供了兩個功能
authenticate: 對請求設置驗證方式
support: 確認驗證方式是否適合驗證傳入的對象
UserDetailService: 是security取得使用者資訊的介面,裡面會實作一個方法是loadByUserName
透過username取得使用者資訊(security取得的資訊類別需要繼承UserDetails這個類別)
也可以在UserDetails裡面設置權限。

最後,讓我們先安裝mySQL資料庫,以便之後實作可儲存資料

下載連結 : https://dev.mysql.com/downloads/mysql/
安裝教程:https://clay-atlas.com/blog/2019/11/16/mysql-mysqlworkbench-tutorial-download-install-steps/

引用至
五倍紅寶石:
https://5xruby.tw/posts/what-is-jwt
JWT機制
https://medium.com/麥克的半路出家筆記/筆記-透過-jwt-實作驗證機制-2e64d72594f8


上一篇
Spring Boot專案建立(Day3)
下一篇
JWT實作(一)(Day5)
系列文
Angular+Spring Boot API 處理股市資料32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言