2015-12-17 100 views
0

試圖實現與智威湯遜安全認證方法,這會爲許多客戶提供包括網頁(單頁APP),桌面,消耗的API移動,我想出了這個系統:這種基於JWT的身份驗證方法是否安全?

  1. 客戶來電/認證/註冊用戶名和密碼設置
  2. 驗證服務器之後返回兩個標記的AUTH_TOKEN和refresh_token
    • 驗證令牌短暫的15分鐘,在每個下面的API調用
    • 刷新令牌長期居住使用也許 一個12個小時到一個星期,但與格式user_pass + long_string
  3. 密鑰令牌到期後一個叫/ auth /中更新被稱爲
    • 的身份驗證令牌發送到檢查簽字多久它已過期(不超過一小時)
    • 刷新令牌也會發送,並使用用戶密碼進行驗證
    • 如果刷新令牌未過期並且驗證令牌未過期很長時間,新的認證令牌被髮回
    • 如果用戶的密碼已更改,刷新令牌無效,並要求用戶雖然沒有對身份驗證令牌是一個小窗口重新認證後,其現有的短命的身份驗證令牌已過期

過期並且仍然有效,並且存在對數據庫的呼叫;這是一種使用JWT進行身份驗證並處理密碼更改和令牌刷新的整體安全方式嗎?

回答

1

不要嘗試實現自己的身份驗證基礎結構。機會,你會得到一個安全的實施是最小的,現在你將不得不維護所有的代碼也。

更好地使用信譽良好的來源的授權服務器,如Thinktecture IdentityServerAzure Active Directory,並使用標準庫和協議。

一些問題,我看到你的建議:

  1. ,如果你不籤的訪問令牌,是什麼阻止我從內部改變 索賠?
  2. 如果您需要用戶的密碼來驗證刷新令牌,則必須以可以以明文形式檢索它的方式進行存儲。只能將密碼存儲爲鹽漬散列,以防止您獲得明文。
+0

訪問令牌將使用單獨的訪問密鑰進行簽名,但我在第2位看到您的要點。我完全忘記了密碼將如何存儲(使用bcrypt)。謝謝你的答案。 –