Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JWT在JWT.io上解码,但不在应用程序中_Jwt_Decode_Auth0 - Fatal编程技术网

JWT在JWT.io上解码,但不在应用程序中

JWT在JWT.io上解码,但不在应用程序中,jwt,decode,auth0,Jwt,Decode,Auth0,我正在尝试解码从Auth0获得的JWT。当我转到jwt.io时,他们有一个解码器,你可以将jwt放入其中,它会告诉你关于jwt每个部分的所有信息。我可以看出所有的信息都是正确的。当我试图自己解码时,我得到了这个错误我从Auth0注册的客户端信息中获取密钥,注意:客户端密钥不是base64编码的。在使用此密码之前,是否需要对其进行base64编码? ValueError: Could not unserialize key data. 终点站 >>> import jwt &

我正在尝试解码从Auth0获得的JWT。当我转到jwt.io时,他们有一个解码器,你可以将jwt放入其中,它会告诉你关于jwt每个部分的所有信息。我可以看出所有的信息都是正确的。当我试图自己解码时,我得到了这个错误我从Auth0注册的客户端信息中获取密钥,注意:客户端密钥不是base64编码的。在使用此密码之前,是否需要对其进行base64编码?

ValueError: Could not unserialize key data.
终点站

>>> import jwt

>>> secret = secret
>>> encoded_jwt = encoded_jwt
>>> decoded_jwt = jwt.decode(encoded_jwt, secret, algorithm="RS256")

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/site-packages/jwt/api_jwt.py", line 78, in decode
    jwt, key=key, algorithms=algorithms, options=options, **kwargs
  File "/usr/local/lib/python3.6/site-packages/jwt/api_jws.py", line 140, in decode
    key, algorithms)
  File "/usr/local/lib/python3.6/site-packages/jwt/api_jws.py", line 204, in _verify_signature
    key = alg_obj.prepare_key(key)
  File "/usr/local/lib/python3.6/site-packages/jwt/algorithms.py", line 207, in prepare_key
    key = load_pem_public_key(key, backend=default_backend())
  File "/usr/local/lib/python3.6/site-packages/cryptography/hazmat/primitives/serialization.py", line 24, in load_pem_public_key
    return backend.load_pem_public_key(data)
  File "/usr/local/lib/python3.6/site-packages/cryptography/hazmat/backends/multibackend.py", line 314, in load_pem_public_key
    return b.load_pem_public_key(data)
  File "/usr/local/lib/python3.6/site-packages/cryptography/hazmat/backends/openssl/backend.py", line 1110, in load_pem_public_key
    self._handle_key_loading_error()
  File "/usr/local/lib/python3.6/site-packages/cryptography/hazmat/backends/openssl/backend.py", line 1325, in _handle_key_loading_error
    raise ValueError("Could not unserialize key data.")
ValueError: Could not unserialize key data.
导入jwt >>>秘密 >>>encoded_jwt=encoded_jwt >>>decoded_jwt=jwt.decode(encoded_jwt,secret,algorithm=“RS256”) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 文件“/usr/local/lib/python3.6/site packages/jwt/api_jwt.py”,第78行,解码 jwt,key=key,algorithms=algorithms,options=options,**kwargs 文件“/usr/local/lib/python3.6/site packages/jwt/api_jws.py”,第140行,解码 密钥(算法) 文件“/usr/local/lib/python3.6/site packages/jwt/api_jws.py”,第204行,在签名中 键=alg_对象准备键(键) 文件“/usr/local/lib/python3.6/site packages/jwt/algorithms.py”,第207行,在prepare_key中 key=load\u pem\u public\u key(key,backend=default\u backend()) 文件“/usr/local/lib/python3.6/site packages/cryptography/hazmat/primitives/serialization.py”,第24行,在load\u pem\u public\u key中 返回后端。加载\u pem\u公钥(数据) 文件“/usr/local/lib/python3.6/site packages/cryptography/hazmat/backends/multibackend.py”,第314行,在load\u pem\u public\u key中 返回b.load\u pem\u公钥(数据) 文件“/usr/local/lib/python3.6/site packages/cryptography/hazmat/backends/openssl/backend.py”,第1110行,在load\u pem\u public\u key中 self.\u句柄\u键\u加载\u错误() 文件“/usr/local/lib/python3.6/site packages/cryptography/hazmat/backends/openssl/backend.py”,第1325行,在“句柄\密钥\加载”错误中 raise VALUERROR(“无法取消序列化键数据”) ValueError:无法取消序列化键数据。
由于您既没有提及公钥也没有提及私钥,看起来您正在尝试使用“RS256”算法进行解码,但您的令牌使用的是“HS256”

尝试:

decoded_jwt=jwt.decode(encoded_jwt,secret,algorithm=“HS256”)

而不是:

decoded_jwt=jwt.decode(encoded_jwt,secret,algorithm=“RS256”)

如果您愿意,可以在以下地址使用base64对密钥进行编码:


您可以通过选中jwt.io上“验证签名”部分下的“secret base64 encoded”复选框来验证编码密钥。

您不会碰巧知道如何从RSA证书中获取公钥/私钥,是吗?在写这篇文章的时候,我认为我使用了Auth0提供的客户机_秘密,但现在经过大量研究,我知道我需要一个来自证书的公钥。我已成功获取证书,但获取公钥时遇到很多问题。此链接可能会帮助您: