## Jwt是甚麼? ### 簡單說就是發一個邀請函,信函內會跟你說你的授權範圍與時限 :::info * JSON Web Token(JWT)會產生一組密碼(HMAC)或是生成一對公鑰/私鑰(RSA、ECDSA)來將雙方之間的訊息透過JSON物件進行安全的傳遞。內部的組成包含: **header、payload、signature/encryption data**以Base64做編碼,並且以. 來做分開(例如: xxxxxx.yyyyyy.zzzzz )。 ::: ## Jwt運作原理 ![Jwt](https://hackmd.io/_uploads/HJFpFWoRT.jpg) 1. Client端向Server請求認證 2. 認證通過後取得Token存在Client端,Server無狀態 3. 帶有Token認證的Clinet去呼叫Api Server做驗證 4. Api Server去驗證該請求的Token是否存在 ## Jwt組成 ![Jwt組成](https://hackmd.io/_uploads/H10zT-iA6.jpg) ## 業務場景 1. 註冊後的信箱認證(一次性) 2. Server端的無狀態(登入/登出) 3. 跨伺服器的資源請求(微服務)(驗證一次就能在不同Server取資源而不用再重新認證) 4. 無關安全議題的操作權限授與(好友邀請) 5. 保持登入(登入一次發送一個有期限的JWT) 6. IoT裝置的認證(裝置連網後自動發出一個認證請求,裝置擁有者只要確認沒問題,就讓伺服器回傳JWT) ## 注意事項 1. 駭客雖然可能竊取公鑰,最多只能驗證簽章,沒有權限去竄改,在使用上,我們必須確保 JWT 中不包含任何敏感資訊。 --- **參考資料:** 1. https://medium.com/mr-efacani-teatime/%E6%B7%BA%E8%AB%87jwt%E7%9A%84%E5%AE%89%E5%85%A8%E6%80%A7%E8%88%87%E9%81%A9%E7%94%A8%E6%83%85%E5%A2%83-301b5491b60e 2. https://ithelp.ithome.com.tw/m/articles/10333647 3. https://www.explainthis.io/zh-hant/swe/jwt 4. https://5xcampus.com/posts/what-is-jwt.html