最近,我試圖使用JSON Web令牌(JWT)作爲訪問令牌來實現OAuth2.0服務器。我對JWT的獨立功能非常困惑。我注意到JWT可以在任何地方進行驗證,而不是在授權服務器中強制執行,因爲它是獨立的。此功能如何工作?爲了實現獨立功能,JWT應該包含哪些聲明?JWT如何在授權服務器之外進行驗證
另一個問題是,如果JWT是無狀態的,則意味着服務器不應該存儲JWT。那麼JWT如何驗證?難道它不容易僞造?
我在這個領域的新人,我希望有人可以幫助我:)
最近,我試圖使用JSON Web令牌(JWT)作爲訪問令牌來實現OAuth2.0服務器。我對JWT的獨立功能非常困惑。我注意到JWT可以在任何地方進行驗證,而不是在授權服務器中強制執行,因爲它是獨立的。此功能如何工作?爲了實現獨立功能,JWT應該包含哪些聲明?JWT如何在授權服務器之外進行驗證
另一個問題是,如果JWT是無狀態的,則意味着服務器不應該存儲JWT。那麼JWT如何驗證?難道它不容易僞造?
我在這個領域的新人,我希望有人可以幫助我:)
JWT包含可簽署索賠,加密或兩者兼而有之。 這些操作使用加密密鑰執行。密鑰可以是對稱的(例如,oct
等密鑰)是不對稱的(例如私鑰/公鑰對,例如RSA
或EC
密鑰)。
如果您想驗證一個智威湯遜(即JWS),你必須執行以下步驟:
exp
,iat
,nbf
,aud
)。要檢查簽名,你需要鑰匙,並根據該算法,該鍵可以
當您希望允許第三方應用程序驗證您的JWT,您將使用非對稱密鑰並與第三方共享公鑰。 由於公鑰不能用於簽名,因此第三方無法僞造具有自定義聲明的有效令牌。
您分享鑰匙的方式取決於您。常用的方法是提供應用程序將檢索它們的URL(例如,Google密鑰https://www.googleapis.com/oauth2/v3/certs)。
非常感謝!我現在清楚瞭解這個過程。我還有一個問題,是到期時間是減少令牌泄露丟失的唯一方法嗎?我認爲如果令牌存儲在移動設備中,它很容易被惡意應用程序竊取。是對的嗎? – LuCima
是的,它可以被盜,但如果令牌過期,它就不能再使用了。這就是爲什麼我們強烈建議短壽命的原因 –
謝謝,我現在很瞭解智威湯遜。 – LuCima