2015-12-30 87 views
4

因此,我使用基於Token的身份驗證創建了一個API,現在我想創建註銷,但我不知道如何去做。PHP:如何使用JWT從API註銷

登錄過程只是使用以下步驟:

  1. 用戶通過用戶名和密碼對服務器

  2. 服務器檢查DB,以確保用戶是有效

  3. 令牌生成包含UID和其他詳細信息

  4. 令牌然後傳遞給發送回服務器的用戶w henever他提出請求

現在我想用戶註銷,我該如何去做,我沒有對用戶令牌功率了。

+2

相關:[無效JSON網絡令牌(http://stackoverflow.com/a/23089839/2006429) – usandfriends

回答

2

我也來這裏尋找解決方案,但在閱讀了很多後,我得出了一些結論或說可能的情況。

編輯注: -切勿將令牌任何潛在的信息,讀取令牌中的數據不需要密鑰。密鑰僅用於驗證Base64令牌的簽名。要檢查出來,請轉至http://jwt.io並粘貼您的令牌。我添加了這一點,因爲我看到一個開發人員在令牌中添加用戶的用戶名和密碼。請不要做這樣的事情。

1)帳戶註銷事件是由客戶端發起的,如果他想令牌的到期時間之前註銷。 解決方案: - 從客戶端的每個地方刪除令牌。它可以存儲在DOM,JavaScript變量或HTML密鑰對存儲,或會話存儲或cookie存儲中。我們可以在瀏覽器中存儲任何值,我們也有權刪除這些值。一旦令牌從這個世界的每個角落被刪除,用戶就會被註銷。

買者1上述溶液

如果什麼用戶在緊急註銷,就像有人可能會德式聖誕蛋糕令牌。如何銷燬令牌?

答案與如果我們的智威湯遜的祕密密鑰是stollen會做什麼一樣。我們將快速更改密鑰併爲登錄用戶重新生成令牌。但是在用戶的情況下,我們應該改變什麼?用戶ID(我會說不)。我們應該在借記/信用卡中添加一個類似於機制的賬戶鎖定機制,其中卡被鎖定24小時。但在我們的情況下,我們應該將結束期限鎖定在令牌的到期時間之外。

2.)標記就像導彈,一旦被解僱,我們不能要求他們關閉。 我說的是理想的情況,如果你在數據庫中存儲了被解僱的token的引用,那麼沒有使用JWT的意義。我們可以使用任何散列生成方法生成令牌。

3.)設置到期時間短。在上一個令牌過期之前,不讓用戶注意這一點而續訂。時間可能在20秒左右。你仍然必須考慮警告1,因爲任何擁有真正令牌的人都可以要求新的令牌。

4.)我們還可以在令牌中添加一個字段IP地址,並檢查當前用戶的IP地址是否與登錄時使用的IP地址相匹配。它可以防止遠程黑客。

5)在用戶界面中添加一個清晰可見的退出按鈕,以防止無知的用戶,並引導用戶從應用程序每次與你的應用程序完成的時間退出。

6)在您的令牌元添加客戶端類型。對於移動應用程序,請檢查HMAC或IMEI代碼,而不是IP地址,因爲移動應用程序需要繼續運行會話,因爲沒有人希望他或她的用戶從其移動應用程序註銷。但是,妥協者可以危害IMEI和HMAC地址。但是隨機使用HMAC,IMEI或任何其他可用的字符串可以增加一點安全性。

7)我會添加更多,如果結識更多這樣的。

Invalidating JSON Web Tokens這個線程也有很多很好的投入。正如在評論中提到的那樣。