2016-07-27 108 views
1

我試圖更好地理解JWT以及如何正確使用它。JWT中的公鑰和私鑰治理

在常見的JWT用例(如基於JWT的認證或oauth中的JWT訪問令牌)中,驗證JWT令牌客戶端是否有意義?特別是,我要求這樣更好地理解JWT簽名和加密中涉及的公鑰和私鑰的需求。如果客戶端不需要驗證JWT簽名,則服務器不需要提供公鑰。如果這是真的,我甚至不需要全面的X.509證書:裸露的公鑰/私鑰對或自簽名證書就足夠了,對吧?

所以,這一切都歸結爲一個問題:處理智能手機中使用的非對稱密鑰的正確方法是什麼?我需要一個公鑰基礎設施還是一個簡單的私鑰/公鑰?

據我所知,JWT規範沒有涵蓋這一點:但我很想知道真正的JWT使用中的常見做法。

當然,這個問題與https所涉及的證書無關:我只是談論JWT簽名和加密中使用的密鑰。

回答

1

驗證JWT令牌客戶端是否有意義?

如果您使用令牌有效載荷數據在客戶端執行操作,並且您需要信任該令牌,那麼這很有意義。如果您在服務器中使用令牌進行身份驗證,請讓服務器驗證簽名。

如果這是真的,我甚至不需要完整的X.509證書:裸露的公鑰/私鑰對或自簽名證書就足夠了,對吧?

我需要一個公鑰基礎結構還是一個簡單的私鑰/公鑰?

您可以使用可信證書,自簽名證書或簡單的RSA密鑰對。通常使用自動生成的密鑰對。但是,如果您不打算驗證客戶端上的簽名,則可以使用HMAC對稱密鑰(而不是非對稱密鑰