在Laravel 實現自動Refresh JWT 機制 | php jwt laravel
簡介JWTJSONWebToken(JWT)[1]是由Auth0[2]於2015年所提構出的一個新Token機制,嚴格來說JWT並不是一個新的技術或軟體,而是一套規範(RFC-7519[3])。基本上JWT包含以下三種資訊:{"alg":"HS256","typ":"JWT"}{"loggedInAs":"admin","iat":1422779638}key=secretkeyunsignedToken=encodeBase64Url(header)+.+encodeBase64Url(payload)signature=HMAC-SHA256(key,unsignedToken)以上資訊最終會被以.的符號組成一段JWTTokenencodeBase64Url(header)+.+encodeBase64Url(payload)+.+encodeBase64Url(signature)由於使用JWT來進行驗證並不...
簡介 JWTJSON Web Token (JWT)[1] 是由 Auth0[2] 於 2015 年所提構出的一個新 Token 機制,嚴格來說 JWT 並不是一個新的技術或軟體,而是一套規範(RFC-7519[3])。基本上 JWT 包含以下三種資訊:
{"alg":"HS256","typ":"JWT"} {"loggedInAs":"admin","iat":1422779638} key = secretkey unsignedToken = encodeBase64Url(header) + . + encodeBase64Url(payload) signature = HMAC-SHA256(key, unsignedToken)以上資訊最終會被以 . 的符號組成一段 JWT Token
encodeBase64Url(header) + . + encodeBase64Url(payload) + . + encodeBase64Url(signature)由於使用 JWT 來進行驗證並不需要將資訊存放在 Server 當中,因此更易於 Server 橫向擴展,除此之外還具有以下優點:
Token 本身即能表示過期時間資訊 即便在禁止使用 Cookie 的裝置下也能作用 防止 CSRF 攻擊同時有另外一派的人呼籲停止使用 JWT 這樣的機制,並提出 JWT 在各方面優點的錯誤假設與缺失,由於探討 JWT 使否為更好的選擇不在本文的探討範圍,並且筆者認為使用 Session 或是 JWT 本來就沒有絕對的對錯,只有瞭解各自的優缺點並且在正確的使用場景運用它才能解決實際的問題,附上探討相關議題的原文連結:http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions/[4]
為什麼需要 Refresh JWT Token?因為 JWT Token 本身帶有過期時效的資訊,在安全性的考量下,配發一個長效期的 Token(個人認為超過一天就算是長效期了)明顯不是一個明智的選擇,所以通常會配發短效期 Token(例如一個小時)並且...