簡體   English   中英

為什么 PyJwt 在使用“ES256”簽名方法時不識別位置參數“算法”?

[英]Why doesnt PyJwt recognize the positional argument "algorithm" when using "ES256" signing method?

我使用PyJwt生成和編碼蘋果應用程序通知服務令牌身份驗證的JWT這就需要ES256簽名算法注意到這里

self.server = settings.APNS_SERVER
self.algorithm = 'ES256'
PRIVATE_KEY = settings.APNS_PRIVATE_KEY

encoded_jwt = jwt.encode(
    {'iss': settings.TEAM_ID, 'iat': time.time()},
    PRIVATE_KEY,
    algorithm=self.algorithm,
    headers={'alg': self.algorithm, 'kid': settings.APNS_KEY_ID},
)

當通過這種方式時,我收到以下錯誤:

     encoded_jwt = jwt.encode(
   File "/usr/local/lib/python3.9/site-packages/jwt/api_jwt.py", line 63, in encode
     return api_jws.encode(json_payload, key, algorithm, headers, json_encoder)
   File "/usr/local/lib/python3.9/site-packages/jwt/api_jws.py", line 114, in encode
     signature = alg_obj.sign(signing_input, key)
   File "/usr/local/lib/python3.9/site-packages/jwt/algorithms.py", line 423, in sign
     der_sig = key.sign(msg, ec.ECDSA(self.hash_alg()))
 TypeError: sign() missing 1 required positional argument: 'algorithm'

當我使用RS256HS256簽名算法時不會發生這種情況。

為什么會這樣?

最有可能的是,您的私鑰沒有正確生成。 使用此指令生成 ES256 密鑰: https ://connect2id.com/products/nimbus-jose-jwt/openssl-key-generation

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM