无法使用JWK签名创建JWT

2024-09-30 19:24:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用KID创建JWT,alg=RS256,TypeError:需要PEM格式的密钥。 导入json

import jwt
from cryptography.hazmat.backends.openssl import rsa
from cryptography.hazmat.primitives import serialization

body={
  "sub": "createjwt",
  "iss": "sktestissuer",
  "exp":9283750542
}
private_key={

  "p": "atewtwetwqetasdfaerawerqwerqwur",

  "kty": "RSA",

  "q": "atewtwetwqetasdfaerawerqwerqwF",

  "d": "atewtwetwqetasdfaerawerqwerqw",

  "e": "ABCD",

  "use": "sig",

  "kid": "test_key",

  "qi": "atewtwetwqetasdfaerawerqwerqw",

  "dp": "atewtwetwqetasdfaerawerqwerqw",

  "dq": "atewtwetwqetasdfaerawerqwerqw",

  "n": "atewtwetwqetasdfaerawerqwerqw"

}
public_key={

"kty": "RSA",

"e": "ABCD",

"use": "sig",

"kid": "test_key",

"n": "test-13245"}
print(type(private_key))
#key=json.dumps(private_key)
#print(type(key))
#private_key1=rsa.RSAPrivateKey().public_key()
encoded = jwt.encode(body,private_key,headers={"kid": "test_key"}, algorithm="RS256")
print(encoded)

回溯(最近一次呼叫最后一次): 文件“C:\Users\PycharmProjects\seleniumproject\testpractive\jwt_test.py”,第52行,在 encoded=jwt.encode(body,private_key,headers={“kid”:“test_key”},algorithm=“RS256”) 文件“C:\Users\PycharmProjects\seleniumproject\venv\lib\site packages\jwt\api\u jwt.py”,第63行,编码 返回api_jws.encode(json_负载、键、算法、头、json_编码器) 文件“C:\Users\PycharmProjects\seleniumproject\venv\lib\site packages\jwt\api\u jws.py”,第110行,编码 键=alg_对象准备键(键) 文件“C:\Users\PycharmProjects\seleniumproject\venv\lib\site packages\jwt\algorithms.py”,第260行,在prepare\u key中 raise TypeError(“应为PEM格式的密钥”) TypeError:应为PEM格式的密钥


Tags: 文件keypytestjsonprivatejwtpem