首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪个Python JOSE库支持嵌套JWT (signed+encrypted)?

哪个Python JOSE库支持嵌套JWT (signed+encrypted)?
EN

Stack Overflow用户
提问于 2016-05-18 11:19:03
回答 1查看 1.7K关注 0票数 3

我研究了python-jose和jose,但似乎都不支持加密签名的JWT。例如,"jose“库支持单独签名和加密,而不需要嵌套它们。

我是不是遗漏了什么,比如在库之外嵌套JWTs可能相当容易?如果是这样,请分享实现这一点的技巧,以使结果格式正确。

EN

回答 1

Stack Overflow用户

发布于 2017-01-17 23:56:50

jwcrypto支持嵌套的JWS和JWE。

要签名,然后进行加密:

代码语言:javascript
复制
# 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)

要解密和验证签名:

代码语言:javascript
复制
#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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37289672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档