当前位置: 首页 > 知识库问答 >
问题:

如何使用python将私钥编码为RS256格式的JSON WEB令牌

红鸿运
2023-03-14

好吧,我已经经历了很多问题,以及他们各自的答案,大多不是私钥(从-----BEGIN RSA PRIVATE KEY开始-----) 在jwt中编码,公钥正在发送(这不是从-----BEGIN RSA PRIVATE KEY开始-----). 我已经使用python中的pyjwt库进行编码并获取所需的令牌,我使用它来发送到docuign以进行授权

payload = {
    "iss": CLIENT_AUTH_ID,
    "sub": ACCOUNT_ID,
    "exp": unix,
    "aud": "account-d.docusign.com",
    "scope": "signature impersonation"
}
signed = jwt.encode(payload, private_key, algorithm='RS256')

它总是返回ValueError:无法反序列化数据,他们的HS256算法工作正常,但当涉及到RS256时,它不会正常工作,一些答案建议将其转换为PEM格式,但我的格式已经是这种格式了(-----BEGIN RSA PRIVATE KEY(code)---END RSA PRIVATE KEY------)

共有2个答案

万俟均
2023-03-14

而不是使用jwt库这为我工作我的进口

from jose import jws
from cryptography.hazmat.primitives import serialization as crypto_serialization

private\u key\u pem是private的路径。pem文件,其中我的私钥为(-----开始RSA私钥------(代码)---结束RSA私钥------)

with open(private_key_pem, "rb") as key_file:
    private_key = crypto_serialization.load_pem_private_key(key_file.read(), password=None)

key = private_key.private_bytes(crypto_serialization.Encoding.PEM,
                                crypto_serialization.PrivateFormat.PKCS8,
                                crypto_serialization.NoEncryption())
signed = jws.sign(payload, key, algorithm='RS256')

以这种方式使用python-jose进行RS256算法,希望可以工作

宫高义
2023-03-14

传递给jwt的私钥。编码必须是字节文字 。我怀疑您的代码传递的是字符串(在Python中是unicode而不是字节)。

 类似资料:
  • 我有十六进制格式的私钥: 308204BC020100300D06092A864886F70D0101010500048204A6308204A20201000282010100B3B6F5AB13FCDECC12438581E90302E12BCF14570B49DCA2BF40957B79B10630DE20CB18B21D7393AC54FBA9D236F09235C4AF4D8E9227B

  • 我需要与GitHub集成API进行交互,但具体是从。NET 4.0,所以我不能使用Octokit。 基本上,我得到了一个格式化的私有rsa密钥(标准不支持。NET API),并且必须发送RS256 jwt令牌才能获得与API交互的身份验证令牌。 提供了以下ruby示例代码: 使用下面的curl示例 以及以下Result示例:

  • 让我先解释一下我的问题。我从CA购买了一个证书,并使用以下格式生成csr和私钥: 有趣的是,在aws文档页面上,他们显示的示例私钥以“------开始RSA私钥-------”开头 有没有办法使用OpenSSL将我的私钥转换为RSA私钥?

  • 我正在使用jose-jwt库,并希望使用RS256加密算法在C#中创建一个有签名的JWT。我对密码学没有经验,所以请原谅我的无知。我在文档中看到以下示例: 它显示了文件的使用,但是如何使用下面表单的RSA密钥文件呢?我正在查看X509Certificate2的文档,但我看不到RSA私钥的选项。它似乎只接受,我认为这是公钥。 最后,文档中列出的两个选项之间的区别是什么?我如何在这两个选项之间进行选择

  • 我需要用java生成openssh格式的密钥对。 我使用java中的KeyPairGenerator生成了一个公私密钥对,并将其保存到一个文件中: 但是,如果我尝试使用这个与ssh-keygen我得到一个"失败加载密钥private.key:无效格式" 如何将PKCS#8私钥转换为openssh格式或生成openssh格式的密钥对?

  • 我试图在VBA中生成JSON Web令牌(JWT)。我需要用RS256签名。到目前为止,我成功地创建了base64编码的报头和有效负载。他们两人都工作得很好。 现在我被困在用RS256签署JWT报头有效载荷上了。我找不到默认的VBA类或函数,它提供RSA-SHA256使用私钥进行加密。在官方的微软留档中,我只找到了使用公钥加密的方法:https://docs.microsoft.com/en-us