2017-01-09 124 views
0

我正在閱讀關於智威湯士的最近,我有一個時刻;我有一個想法,在我的腦海裏似乎很棒,但我認爲在結束時它並不是那麼棒。智威湯遜全球+私密

我看到人們正在用單一密鑰加密令牌以達到全球目的。如果我爲每個用戶生成全新的密鑰,那麼以後再加入兩個字符串並使用輸出來加密令牌會怎樣?這將處理需要爲不應再訪問的用戶創建黑名單等等。我錯過了什麼?因爲我確信有人對我有類似的想法,並且由於某種原因它沒有被廣泛使用。我失去了什麼?

回答

2

JWT使用發行者的私鑰(通常是服務器)進行簽名(未加密)。數字簽名標識簽名者並保護內容免遭更改。

如果您修改有效JWT的有效負載,簽名或創建假令牌,服務器只會拒絕它。這就是爲什麼服務器不需要發佈令牌的原因,因爲如果令牌可信,它可以以加密方式進行驗證

您可以爲每個用戶創建一個不同的密鑰,但不是必需的,因爲您要證明令牌已經由服務器發出信任包含在有效載荷中的數據,只需要一個密鑰

+0

當然!對不起,你完全正確。這不是加密,而是簽名。我不想處理已發佈令牌的列表,但應該強制註銷的用戶列表 - 我更改用戶的鹽,並且此後他的令牌將無效。你認爲我的概念有什麼優勢,還是沒有深思熟慮? –

+0

在您建議或散列一組關鍵用戶屬性時更改用戶的密鑰是黑名單令牌強制JWT失效的正確替代方案。有些人不喜歡這種技術,因爲打破JWT無狀態並且需要在每個請求中訪問數據庫。他們更願意讓令牌過期並建立一個短暫的刷新時間。在每種情況下爲您的項目選擇最合適的選項 – pedrofb

+0

我明白您的觀點。但爲了驗證令牌,您仍然需要查詢您的黑名單數據庫,因此我認爲我的替代方案不是一種犯罪行爲:D非常感謝您,我會考慮這一點,但很高興知道這是可以接受的。 –