對於我的項目,我實現了使用承載令牌的OAuth2身份驗證框架。JWT訪問令牌安全注意事項
從快速搜索來看,JWT令牌看起來像是今天持有者令牌的主流選擇。
如果我使用不編碼任何信息的「啞」標記,我會將此標記與所有相關參數(標記的用戶,發行日期,到期日期等)一起存儲在數據庫中。
從智威湯遜的文檔,我明白,我可以實現此流程避免這種開銷:
- 用戶提供支持的方法
- 認證服務生成JWT令牌和下面的參數編碼爲它一個驗證:用戶ID,使用的驗證方法,發行日期,到期日期
- 驗證服務加密並簽署令牌
- 令牌發送給用戶以供後續使用
加密步驟是可取的,因爲我不想公佈用戶ID。
我的理解是,如果我使用上述方法,我可以避免存儲訪問令牌和用戶之間的映射,完全依賴於令牌提供的用戶ID信息。
這種方法讓我感到困擾的是,看起來我沒有選擇「撤銷」訪問令牌。換句話說,即使訪問令牌會被破壞,我也無法將其禁用(除非我知道確切的受損令牌,事實並非如此)。
這是一個真正的擔憂,或者我只是想念一些事件?如果這種擔憂是真實的,我該如何解決它?
你說得對,智威湯遜有效期到期,你不應該存儲它。你可以建立一個撤銷清單,但通常的做法是讓令牌過期並根據需要調整到期期限。請參閱https://stackoverflow.com/questions/37507714/invalidating-client-side-jwt-session – pedrofb