2016-02-19 115 views
10

我以前問過關於JWT令牌安全性的一個長問題,但我想在此專門關注JWT令牌撤銷。我使用JWT作爲我的主要身份驗證機制來驗證移動應用程序的移動客戶端。我的問題是:是否值得實施令牌撤銷?目前,我使用的令牌時間很短,我依靠TLS來防止未授權用戶盜取令牌。我沒有實現令牌撤銷。但基本上這意味着如果某個令牌被盜用了,那麼就沒有辦法撤銷它了。更令我擔憂的是,當用戶退出應用程序時,如果我無法撤消它們,最後使用的令牌仍然有效。而且這也意味着我不能限制用戶可以請求的令牌數量,因爲我沒有跟蹤發佈的任何令牌。我見過很多應用程序只是將所有發佈的令牌存儲在數據庫中,允許它們撤銷和管理令牌。但這似乎打破了使用智威湯遜的目的。值得添加這樣的複雜性還是我現在的系統安全?JWT令牌撤銷是否值得?

在此先感謝。我感謝任何幫助。

回答

3

是否值得這裏的任何人都難以評估。這取決於你正在保護的內容以及你想要緩解的風險。如果您認爲有必要撤銷令牌,則可以使用reference tokens。它強制使用這些令牌的服務與授權服務器進行通信,這會降低可伸縮性並引入單點故障。

正在開發一些措施來防止令牌被盜用。看看Token Binding ProtocolProof Key for Code Exchange by OAuth Public Clients

+0

謝謝MvdD。我很感激。這真的很有幫助。 –

+0

不客氣,只要使用upvote按鈕,如果答案是有幫助的。並且不要忘記標記一個被接受的答案。 – MvdD

4

我認爲你應該考慮有人可以提取令牌的可能性,無論你如何保護它。它存在於你無法控制的設備上。

而不是傳遞令牌,爲什麼不與客戶端和服務器協商密鑰?他們可以使用該密鑰來簽署他們對服務器的請求,並且可以跟蹤這些祕密 - 如果有人退出,甚至可以撤銷這些祕密。這樣可以讓簽名保持到期,因此即使它們被捕獲,它們也只需幾分鐘。

+0

謝謝特拉維斯。你是對的。如果有人訪問客戶的電話,客戶的帳戶將完全受到損害。我會研究你的方法。 –

+1

「與客戶端和服務器協商密鑰」是一個非常大的手勢。協商集中存儲的密鑰與協商集中存儲的JWT有什麼不同? –