2016-09-22 72 views
0

最近,我試圖使用JSON Web令牌(JWT)作爲訪問令牌來實現OAuth2.0服務器。我對JWT的獨立功能非常困惑。我注意到JWT可以在任何地方進行驗證,而不是在授權服務器中強制執行,因爲它是獨立的。此功能如何工作?爲了實現獨立功能,JWT應該包含哪些聲明?JWT如何在授權服務器之外進行驗證

另一個問題是,如果JWT是無狀態的,則意味着服務器不應該存儲JWT。那麼JWT如何驗證?難道它不容易僞造?

我在這個領域的新人,我希望有人可以幫助我:)

回答

1

JWT包含可簽署索賠,加密或兩者兼而有之。 這些操作使用加密密鑰執行。密鑰可以是對稱的(例如,oct等密鑰)是不對稱的(例如私鑰/公鑰對,例如RSAEC密鑰)。

如果您想驗證一個智威湯遜(即JWS),你必須執行以下步驟:

  • 檢查頭(算法是支持的,關鍵的權利要求有效載荷,其價值被理解)。
  • 檢查索賠(特別是exp,iatnbf,aud)。
  • 檢查簽名。

要檢查簽名,你需要鑰匙,並根據該算法,該鍵可以

  • 對稱密鑰
  • 公鑰如果不對稱

當您希望允許第三方應用程序驗證您的JWT,您將使用非對稱密鑰並與第三方共享公鑰。 由於公鑰不能用於簽名,因此第三方無法僞造具有自定義聲明的有效令牌。

您分享鑰匙的方式取決於您。常用的方法是提供應用程序將檢索它們的URL(例如,Google密鑰https://www.googleapis.com/oauth2/v3/certs)。

+0

非常感謝!我現在清楚瞭解這個過程。我還有一個問題,是到期時間是減少令牌泄露丟失的唯一方法嗎?我認爲如果令牌存儲在移動設備中,它很容易被惡意應用程序竊取。是對的嗎? – LuCima

+0

是的,它可以被盜,但如果令牌過期,它就不能再使用了。這就是爲什麼我們強烈建議短壽命的原因 –

+0

謝謝,我現在很瞭解智威湯遜。 – LuCima

相關問題