我已閱讀了有關令牌認證的一些內容,並且有一件事我不明白。我想如果用戶使用他的密碼登錄(通過https),我會生成一個隨機標記('md5(random + timestamp)'?)和過期日期並將其放入數據庫中。現在,在每個請求中(也通過https?),用戶可以發送令牌,並檢查數據庫中是否有具有該令牌的用戶並登錄該用戶。 現在我讀過一些標記包含用公鑰/私鑰算法加密的用戶名和時間戳。我不明白的是這個原因。我有我的數據庫中的令牌,並將其與用戶發送給我的令牌進行比較。如果他更改了令牌,我找不到具有該令牌的用戶,因此它是無效的令牌。我沒有看到爲什麼我必須以不同方式檢查令牌的有效性的原因?謝謝!爲什麼在驗證令牌中有數據?
1
A
回答
0
散列是不加密:Fundamental difference between Hashing and Encryption algorithms
,你需要不令牌存儲在服務器上。客戶端必須存儲它(本地/會話存儲),然後使用https重新發送。令牌的主體/有效負載具有類似userId,名稱或電子郵件甚至角色/權限的聲明。爲什麼需要此信息?因爲對於每個資源請求,您必須在服務器端確保允許客戶端通過檢查令牌中的聲明數據來執行當前操作。
您驗證了一些壞人(在https連接中受到攻擊的人)修改令牌的令牌的真實性。這可以通過簽署令牌來完成。看看JSON Web令牌:http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html
相關問題
- 1. 爲什麼我沒有收到身份驗證令牌錯誤?
- 2. 爲什麼在驗證令牌時nginx-jwt太慢了?
- 3. 爲什麼Twitter返回「無法驗證oauth簽名和令牌?」
- 4. Android reCAPTCHA API:驗證用戶令牌有什麼意義?
- 5. Wowza令牌驗證
- 6. 驗證SAML令牌
- 7. 驗證ADFS令牌
- 8. GCM令牌驗證
- 9. CSRF令牌驗證
- 10. 在基於令牌的身份驗證中,令牌如何驗證?
- 11. 什麼是Facebook實時API中的驗證令牌
- 12. 什麼信息要在身份驗證令牌上登錄
- 13. 在nodejs中驗證LTPA令牌
- 14. 在SignalR中驗證OAuth/AAD令牌
- 15. 在REST API中驗證令牌
- 16. 在web api中驗證Thinktecture OAuth令牌
- 17. OpenID在PHP中訪問令牌驗證
- 18. Node.JS驗證Google身份驗證令牌
- 19. oAuth2春季令牌驗證/驗證
- 20. 驗證C2DM驗證令牌 - Android/Urban Airship
- 21. 將JWT令牌轉換爲ClaimsPrincipal而無令牌過期驗證
- 22. 帶有「+」的身份驗證令牌
- 23. 有Struts的令牌驗證的春季
- 24. 數據驗證和驗證有什麼區別?
- 25. Azure OpenId令牌驗證
- 26. CherryPy身份驗證令牌
- 27. Facebook身份驗證令牌
- 28. 驗證Windows標識令牌
- 29. 如何驗證CSRF令牌?
- 30. 身份驗證令牌
用戶名和時間戳不用於檢查用戶的身份,他們只是用來幫助確保生成唯一的令牌。 –
但是爲什麼使用公鑰/私鑰加密它,而不僅僅是使用md5? – user2170547