我有一個JWT是Auth0提供的我,當我在一個角度應用程序通過鎖定認證。解碼Auth0令牌時遇到
我複製並粘貼此令牌到名爲token
一個Ruby變量。
這裏是我得到的Rails的控制檯上,當我嘗試令牌解碼:
> JWT.decode token, nil, false
=> [{"iss"=>"https://benfranklinlabs.auth0.com/", "sub"=>"auth0|58306f91c08814e01015f434", "aud"=>"8NWWMzcPNXEvxogqwRar18hJuYAvsrG0", "exp"=>1479766470, "iat"=>1479730470}, {"typ"=>"JWT", "alg"=>"HS256"}]
這是好的,但我認爲在解碼過程中應該需要我Auth0客戶端密鑰。我使用Knock與試圖令牌like this解碼我的Rails應用程序:
JWT.decode token, decode_key, true, options.merge(verify_options)
而且decode_key
等於這樣的:
JWT.base64url_decode Rails.application.secrets.auth0_client_secret
而這種嘗試失敗。我得到以下錯誤:
*** JWT::VerificationError Exception: Signature verification raised
我想這是有道理的。如果我可以在沒有使用密鑰的情況下正確解碼令牌,那麼我想我的令牌一定不是用我的Auth0 Client Secret創建的。但我並不知道這是事實。
所以我的問題是這樣的:山寨版似乎需要用我的Auth0端密碼令牌進行解碼,但使用我的客戶端密鑰不起作用令牌解碼。我怎樣才能使它工作?
編輯:
這裏是我的令牌:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2JlbmZyYW5rbGlubGFicy5hdXRoMC5jb20vIiwic3ViIjoiYXV0aDB8NTgzMDZmOTFjMDg4MTRlMDEwMTVmNDM0IiwiYXVkIjoiajNKdHpjYnNpTUkyR0JkRnZGb3FFTjM4cUtTVmI2Q0UiLCJleHAiOjE0Nzk3NzE4ODMsImlhdCI6MTQ3OTczNTg4M30.MuUbdC7TLBcteKCry-sioeZVStI9TZ6TdsP5WG_6K08
這裏是我的客戶ID:j3JtzcbsiMI2GBdFvFoqEN38qKSVb6CE
這裏是我的客戶祕密:development_secret
啊,我需要澄清。我剛剛瞭解到'JWT.decode token'中的'true',decode_key,true'意味着'verify'。如果我將該參數設置爲「false」,則無論使用密鑰還是不使用密鑰。如果我將該參數設置爲「true」,則無論是否使用密鑰都會失敗。 –