那接下來,我們就來談談這進化的 Token。
什麼是 JWT
JWT 全名是 JSON Web Tokens,它提供強大的加密演算法並可內含資訊,做為安全資訊傳輸,解碼後的資料是以JSON作為資料讀取。因為資料透過了數位簽證處理,所以可以被信任跟驗證。
官網上 JWT 清楚的列出,各個語言支援 JWT 的 library,甚至特別標出還不支援的部分及線上Debugger工具,從小地方就可以看出他們對於 JWT 的重視。
進一步定義
- 因為它 szie 很小,所以可以很輕易的被附加在 URL 參數、HTTP header 裡。
- 它內附基本資訊,並可內嵌其他自定資訊,
它可以應用在哪裡?
- 登入驗證
- 資訊交換
常見實作方式
使用者輸入帳號密碼,然後傳給 Server,對賬戶密碼驗證無誤後,Server 通常會把 UserId,塞在 Claims (Payload) 裡作為識別,然後用使用一組私密碼,產出一個 JWT 格式的 Token 回傳給前台,此時前台需要把這組 Token 記起來,可能用 Web Storage 或 cookie,但一般是 Web Storage。
下次要跟 Server 要資料的時候,將 Token 取出,透過 HTTP Authorization header 或 URL 參數傳遞給 Server。Server 因為有私密碼,可以直接呼叫有實作 JWT 的 library,可得知 Token 是否過期,或 Token 真偽的資訊。