我一直在使用Tomcat API發送/接收數據,登錄,註銷等的Android/IOS應用程序。我的主要身份驗證方式是使用SHA-512通過JSON Web令牌與HMAC進行身份驗證。認證照常進行。用戶提供他們的憑證(用戶名和密碼)第一次登錄。服務器驗證憑證,如果它們是正確的,它會生成並返回一個JWT給用戶,他們可以使用它來在將來的請求中驗證自己。該令牌包含一個自定義聲明,該自定義聲明指定了用於識別哪個用戶發出請求的用戶ID。我做了一些關於智威湯遜的研究,關於許多問題的觀點是不一致的。我有幾個問題,我希望你可以點亮:關於JSON Web令牌安全性的幾個問題?
1-使用JWT作爲我的API的唯一身份驗證機制足夠嗎?在安全性方面,使用HMAC的JWT和使用RSA的JWT有什麼不同?
3-理想情況下,我應該在哪裏存儲我簽署令牌的對稱簽名密鑰?目前,我將密鑰直接傳遞給生成我的令牌的函數。這樣做安全嗎?
4-我是否應該定期更改簽名密鑰以獲得更好的安全性?
5-我可以信任我插入令牌中標識提出請求的用戶的userID聲明嗎?
6-是否有令牌的「理想」到期時間?有些人建議只要15分鐘,而另一些人則說3小時沒事。
7-我應該擔心限制特定用戶可以擁有的令牌數量嗎?用戶可能有多個移動設備,並且在任何時候都可能有多個令牌。在這種情況下,沒有任何東西阻止用戶從我的服務器獲取數千令牌,前提是他們擁有自己的憑證。我應該實現一些機制(例如:數據庫)來跟蹤用戶擁有的令牌嗎?這似乎破壞了JWT的目的,並增加了複雜性,如果在驗證/生成令牌時必須進行額外的數據庫查詢。
8-我是否必須擔心撤銷令牌?有些人認爲擁有短的到期時間就足夠了。其他人指出,如果用戶退出應用程序後不撤銷令牌,則永遠不會擁有真正的註銷機制。等待令牌過期是否是錯誤的?就安全性而言,我何時需要撤銷令牌?
對不起,很長的文章。我一直在擔心處理這些問題的最佳方法。我感謝任何幫助。謝謝
我勸你打出這些在不同的問題:1)的人更容易回答簡短的問題B)這將是爲別人尋找相同的答案,以一個具體的問題C的有用),這將使它更獨立於您的系統實施/問題。 –