當談到安全性,身份驗證策略時,我是一個完整的noob。所以,我正在讀這篇關於「基於令牌身份驗證」: https://scotch.io/tutorials/the-ins-and-outs-of-token-based-authenticationJWT&OAuth2 - 服務器是否存儲令牌?他們如何安全/黑客安全?
我有2個問題:
我不明白爲什麼一箇中間人(或黑客)將無法看到該令牌是由客戶端發送的,並使用它來模擬客戶端/人員來檢索資源?是什麼讓JSON Web Tokens/OAuth2認證更安全?如果我們每次都使用一次性使用令牌,我會明白,即使黑客可以讀取令牌,他也無法將其用於其他請求。但是,由於令牌在到期之前保持不變,那麼這是一種更安全的認證策略?
服務器如何知道客戶端發送的令牌是有效的,即服務器在登錄期間與客戶端交換的東西。服務器是否存儲了在數據庫或某個地方生成的令牌,並不斷更新「上次訪問的時間戳」或其他內容,並在last_accessed_time> 1小時前繼續刪除令牌,以便在停用1小時後保持過期?
非常棒的解釋。 – user1102532
我能夠實現這一點,它運作良好,但還有另一件事,我不知道.. 我們創建一個令牌,並說我們將其設置爲在15分鐘內過期。無論用戶需要再次認證,它將在15分鐘後過期。但是,只要用戶處於活動狀態並且只有當他/她在15分鐘內處於非活動狀態時纔會刷新此令牌,我纔想要刷新此令牌。我們如何才能做到這一點,因爲令牌存儲在客戶端,即使我們通過解碼base64令牌來更改過期時間戳並將其重新編碼將無法工作。 – user1102532
您無法修改JWT的過期時間,因爲它會破壞簽名,服務器將拒絕該令牌。當令牌即將過期時,您必須將令牌更新。例如,響應請求時,服務器是否發出新的JWT並設置自定義標題作爲響應。或者從客戶端執行特定的AJAX請求以獲取新令牌 – pedrofb