簡體   English   中英

JWT令牌設計

[英]Design for JWT token

我見過人們通過以某種方式組合用戶的密碼,上次注銷時間和共享密碼來實現無效的JWT令牌,並將其用作該用戶的JWT密碼。 這樣,更改密碼或注銷將使所有現有令牌無效。

我的問題是

  1. 這是合理/良好的設計嗎?

  2. 如果是, 應該如何將這三個值組合到新的機密中以確保沒有任何不好的事情發生(我是密碼學的新手)?

您應該以bcrypt格式存儲密碼-不應將密碼本身用作內存中保存的任何類型的密鑰。

如果您使用密碼來交換bcrypt哈希,則可以,甚至更好,您可以簡單地存儲和使用上次密碼更改的日期/時間。 如果希望保存存儲要求,則可以有一個“上次更改日期”,該日期在注銷更改密碼時會更新。

請注意,這種設置意味着您無法為每個帳戶支持多個會話,就好像一個會話已注銷一樣,該用戶帳戶下的所有會話也將被支持。

總體而言,這似乎是使令牌在服務器端無效的一種好方法,因為該秘密只是在HMAC中終止了一部分密鑰哈希。

您可以使用實際的機密SHA-224 last_update_date以獲取要使用的密鑰。

例如

secret = sha-224(last_update_time || ":" || static_secret)

但是,由於您將在每個請求中都要與數據庫進行檢查,因此這在很大程度上削弱了JTW的所有優勢-請參見此答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM