哪个Python库支持嵌套JWT(签名和加密)?

哪个Python库支持嵌套JWT(签名和加密)?,python,jwt,python-jose,jose,Python,Jwt,Python Jose,Jose,我查看了python jose和jose,但它们似乎都不支持加密签名的JWT。例如,“jose”库支持单独签名和加密,而不嵌套它们 我是否遗漏了一些东西,比如在库外嵌套JWT可能相当容易?如果是这样,请分享实现这一点的技巧,以使结果格式良好。支持嵌套JWS和JWE 要签名然后加密,请执行以下操作: # Load your RSA pub and private keys pubKey = jwk.JWK().from_pyca(serializedPublicKey) privateKey =

我查看了python jose和jose,但它们似乎都不支持加密签名的JWT。例如,“jose”库支持单独签名和加密,而不嵌套它们

我是否遗漏了一些东西,比如在库外嵌套JWT可能相当容易?如果是这样,请分享实现这一点的技巧,以使结果格式良好。

支持嵌套JWS和JWE

要签名然后加密,请执行以下操作:

# Load your RSA pub and private keys
pubKey = jwk.JWK().from_pyca(serializedPublicKey)
privateKey = jwk.JWK().from_pyca(serializedPrivateKey)

# your JWT claims go here
claims = {
    # JWT claims in JSON format
          }
# sign the JWT
# specify algorithm needed for JWS
header = {
          u'alg' : 'RS256', 
          'customSigHeader':'customHeaderContent'
          }
# generate JWT
T = jwt.JWT(header, claims)
# sign the JWT with a private key
T.make_signed_token(privateKey)
# serialize it
signed_token = T.serialize(compact=True)

# JWE algorithm in the header
eprot = {
    'alg': "RSA-OAEP", 
    'enc': "A128CBC-HS256",
     'customEncHeader':'customHeaderContent'
     }   
E = jwe.JWE(signed_token, json_encode(eprot))
# encrypt with a public key
E.add_recipient(pubKey)#
# serialize it
encrypted_signed_token = E.serialize(compact=True)
要解密和验证签名,请执行以下操作:

#Decrypt and Verify signature
E = jwe.JWE()
# deserialize and decrypt
E.deserialize(encrypted_signed_token, key=privateKey)
raw_payload = E.payload
# verify signature
S = jws.JWS()
S.deserialize(raw_payload, key=pubKey)
final_payload = S.payload

你说的嵌套JWT是什么意思?你只是想要一个加密的JWE的负载是一个签名的JWT吗?就像这样,他们只是在一个JWT上签名,然后在一个加密的JWE的负载中使用它。它不是JOSE规范的一部分,所以您需要自己来做。如何从现有字符串(用于AES 128 GCM加密以获得JWE的128位字符串)创建JWK?