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

无法使用DocuSign Python代码生成jwt令牌

索曾琪
2023-03-14

我使用docusign进行数字签名,在这里我必须创建一个jwt令牌。为此,我一直在使用git repo的代码https://github.com/docusign/docusign-python-client.

得到以下错误引起MaxRetryError(_pool,url,错误或响应错误(原因))urllib3.exceptions.MaxRetryError:HTTPSConnectionpool(host='https',port=443):最大重试超过了urlhttp://account-d.docusign.com/oauth/token(NewConnectionError(':建立新连接失败:[Errno-2]名称或服务不知道',)引起)

我已经按照卷曲请求使用以下url JSON网络令牌(JWT)授予

得到了一个应用令牌,同时通过认证给我401(401未授权)错误邮递员

索赔={“iss”:“4556e2f7-4a3d-41f9-a0c3-18535a28ab2a”,“aud”:“account-d.docusign.com”,“iat”:now,“exp”:later,“scope”:“join(scopes)}token=jwt。编码(有效载荷=索赔,密钥=pkey,算法='RS256')。解码(“utf-8”)我使用上述代码获取应用程序令牌,但当我传递所有必需的参数时,我得到了{“错误”:“无效的授权”,“错误描述”:“没有有效的密钥或签名”},但当我在jwt中粘贴我的jwt令牌时。io使用我的公钥和私钥,其签名已验证。

我添加了截图的链接,这也可能有助于理解更多的问题。https://ibb.co/2yKXNCWhttps://ibb.co/cFTk6R1https://ibb.co/t3YMkr2

共有2个答案

公冶和豫
2023-03-14

以下是你必须确保的事情:

>

您有一个RSA私钥。该密钥被复制/粘贴,与您的配置文件完全相同。必须保留新行

您的URL与环境相匹配。这意味着您使用帐户d和demo.docusign.net沙盒env终结点。

您需要userId,它是将被模拟的用户的GUid。该用户必须同意该应用程序。您必须确保传递的是userId而不是accountId,并且它与您要使用的帐户相同。

如果您确认所有这些,仍然会出错,我会考虑使用我们的代码示例来启动。我在你的问题中没有看到代码,但是我们的代码示例应该是一个很好的开始。

亢琦
2023-03-14

其概念是生成一个包含3个元素的密钥(标头RS256 Algorith、包含应用日期和令牌有效性的有效负载数据以及私钥和公钥)。我们将在网站jwt.io上放置所有这些信息,网站将重新发送Base64密钥,我们可以进一步输入

打开JWT. IO站点jwt.io

  1. 在顶部选择算法RS256

对于第二个窗格:“有效载荷:数据”

https://admindemo.docusign.com/apps-and-keys

ISS:

应用程序的集成密钥(也称为客户端ID)。

子:要模拟的用户的用户ID。(授予权限的人必须具有DocuSign用户帐户。)提供的用户ID必须是GUID(不是电子邮件)格式。您可以使用users.list方法从用户的电子邮件中查找用户的GUID。注意:如果您还没有要代理的用户的用户ID,可以通过完成请求授权代码步骤中开始的授权代码授予流程来获取它。

https://admindemo.docusign.com/apps-and-keys -

aud:要使用的身份验证服务实例的URI。对于演示环境,使用account-d.docusign.com.对于生产环境,使用account.docusign.com.

重要提示:请勿将https://包含在澳元值中!

iat:JWT以Unix epoch格式发布的日期和时间。创建JWT时必须包含iat值,通常设置为当前时间。

您可以使用以下链接将日期转换为linux epoch格式:https://www.epochconverter.com/

Exp:JWT断言将过期的日期-时间

以Unix epoch格式。默认为iat值后一小时,不能设置为更大的值。创建JWT时必须包含exp值。利用时代https://www.epochconverter.com/

⚠请注意,这个值在时间上不能太远,在我们的例子中,我们使用的是14年的有效期。

范围:要请求的范围。在我们的示例中,“签名模拟”。所有范围都在以下站点上定义https://developers.docusign.com/platform/auth/reference/scopes/

{“iss”:“ea670856-0422-4d8e-99bd-80560d323639”,“sub”:“917c9fc5-d615-43bb-8a28-87e7ede3b8ac”,“aud”:“account-d.docusign.com”,“iat”:1628496664,“exp”:1912493464,“范围”:“签名模拟”}

对于窗格“验证签名”https://admindemo.docusign.com/apps-and-keys-

… -

选择“公用”并将其粘贴到分区上

并对公钥执行相同的操作。如果一切正常,您必须在文档左侧有“签名验证”标签,请参见下图。

对于最后一步,您将获得使用API声明的密钥

去找邮递员

>

  • https://www.postman.com/use-cases/api-testing-automation/

    登录(用我的google帐号)

    必须填写以下值

    选择“发布”

    输入API值:https://account-d.docusign.com/oauth/token

    点击“正文”部分

    添加键“grant_type”

    为键"grant_type"添加值"urn: ietf: params: oauth: grent-type: jwt-beler"

    添加关键字"断言"

    在前面的步骤中添加从站点jwt生成的值

    最后点击发送,获取进一步调用所需的“access_token”。[在这里输入图像描述][1]

  •  类似资料:
    • 我被这个困扰了大约3天。基本上,我正在尝试使用Tymon在laravel中生成JWT令牌。这是我的控制器文件。 我使用Chrome postman测试了此api,但它报告了以下错误: JWT.php第73行出现错误异常:传递给Tymon\JWTAuth\JWT::fromUser()的参数1必须是第217行上的Tymon\JWTAuth\Contracts\JWTSubject、App\User给

    • 我试图测试我正在构建的一个关于JWT的软件的功能,以了解它,它使用Firebase JWT PHP包 我正在尝试创建一个使用密钥对作为编码/解码的测试用例,但无法获得http://jwt.io页面以使用我的密钥创建令牌。 这些是我使用命令创建的密钥,没有任何修改。 我转到页面,选择HS256/384/512并删除页面默认设置的键。然后我粘贴我的私钥以便对我的数据进行签名。但是,该页面不会生成任何J

    • 本章将介绍如何使用 Gii 去自动生成 Web 站点常用功能的代码。使用 Gii 生成代码非常简单, 只要按照 Gii 页面上的介绍输入正确的信息即可。 贯穿本章节,你将会学到: 在你的应用中开启 Gii 使用 Gii 去生成活动记录类 使用 Gii 去生成数据表操作的增查改删(CRUD)代码 自定义 Gii 生成的代码 开始 Gii Gii 是 Yii 中的一个模块。 可以通过配置应用的 mod

    • 我正在使用谷歌KMS(https://cloud.google.com/kms/)使用非对称签名密钥对节点中的JSON Web令牌(jwt)进行签名。js应用程序。 我能够创建标头和有效载荷,并与谷歌KMS nodejs库(https://github.com/googleapis/nodejs-kms)我可以签署令牌。 但似乎生成的令牌无效。 事实上,我正在执行以下步骤来生成令牌: 将jwt头定

    • 命令失败,我无法构建kafka-connect-jdbc源代码。我的意图是修改kafka-connect-jdbc源代码。 我遵循了说明https://github.com/confluentinc/kafka-connect-jdbc/issues/456和https://github.com/confluentinc/kafka-connect-jdbc/wiki/faq 所有这些都不能解决问