【问题标题】:DocuSign JWT Authentication Fails in Docker container using python sdkDocuSign JWT 身份验证在 Docker 容器中使用 python sdk 失败
【发布时间】:2020-07-15 16:44:30
【问题描述】:

我正在使用 DocuSign python sdk 发送信封和 JWT 身份验证。在我的 MAC 上一切正常。然后我尝试在 Docker 容器中运行相同的应用程序,当使用“no_valid_keys_or_signatures”从 DocuSign 服务器请求 JWT 令牌时,它失败并出现异常。所有安全 ID 信息似乎都是正确的,客户端 ID、私钥、ds_impersonated_user_id 和授权服务器:account-d.docusign.com

我错过了什么?

2020-07-15 16:27:51,363 - ERROR - fail to get jwt toekn
Traceback (most recent call last):
  File "/usr/src/app/utils/docusign.py", line 366, in _jwt_auth
    expires_in=3600
  File "/usr/local/lib/python3.7/site-packages/docusign_esign/client/api_client.py", line 694, in request_jwt_user_token
    {"assertion": token, "grant_type": OAuth.GRANT_TYPE_JWT}))
  File "/usr/local/lib/python3.7/site-packages/docusign_esign/client/api_client.py", line 399, in request
    body=body)
  File "/usr/local/lib/python3.7/site-packages/docusign_esign/client/api_response.py", line 235, in POST
    body=body)
  File "/usr/local/lib/python3.7/site-packages/docusign_esign/client/api_response.py", line 191, in request
    raise ApiException(http_resp=r)
docusign_esign.client.api_exception.ApiException: (400)
Reason: Bad Request
HTTP response headers: HTTPHeaderDict({'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Content-Type': 'application/json; charset=utf-8', 'Expires': '-1', 'Server': 'Microsoft-IIS/8.5', 'X-AspNetMvc-Version': '5.2', 'X-DocuSign-TraceToken': '9a5577d0-1229-469e-b93d-54a20ae3e90b', 'X-Content-Type-Options': 'nosniff', 'Strict-Transport-Security': 'max-age=31536000; includeSubDomains; preload, max-age=15768000', 'X-Frame-Options': 'SAMEORIGIN', 'X-XSS-Protection': '1; mode=block; report=/client-errors/xss', 'X-DocuSign-Node': 'SE2DFE3', 'Date': 'Wed, 15 Jul 2020 16:27:50 GMT', 'Content-Length': '75'})
HTTP response body: b'{"error":"invalid_grant","error_description":"no_valid_keys_or_signatures"}'

【问题讨论】:

  • 如何存储配置?您需要三样东西 - IK、RSA 密钥和用户 ID (GUID)
  • 配置存储在环境变量和私钥文件的组合中。我使用与 DocuSign github repo "code-examples-python" 相同的代码。该代码在 Docker 容器之外运行良好。我添加了打印语句来向自己展示正在加载的值。我猜也许东西在发送之前没有被编码?
  • docker 容器中的环境变量可能配置不正确?
  • 如果 RSA Key (private.key) 文件存储在盒子中,请确保 Docker 可以访问它。配置文件也一样。我见过一种情况,它必须被挂载或者 Docker 才能看到它
  • 正如我所写,我在调用之前将变量打印到控制台。所以我知道正在加载这些值。私钥也被打印出来。这些都是非常好的建议,我已经验证了这些值。我的下一步是尝试找到一种方法来监控 api 网络调用。

标签: python docker docusignapi


【解决方案1】:

使用 Docker 或 AWS 对 DocuSign 使用 JWT 身份验证不需要做任何特别的事情。 我们在我们的一些示例应用中这样做,例如https://myhr.sampleapps.docusign.com/,当您使用硬编码的“测试帐户”登录时。

要让 JWT 正常工作,需要牢记以下几点:

  1. 确保您使用正确的 RSA 密钥对的私有密钥部分完全正确,因为它提供给您,包括行尾等。
  2. 仔细检查帐户 ID、用户 ID 以及所有 URL 是否指向开发人员环境 (account-d.docusign.com)
  3. 确保您已获得同意,并且它包括 模拟 范围。

这些都应该仔细检查,但我也建议您尝试我们的 Python 快速入门,它会自动为您配置所有内容 - https://developers.docusign.com/docs/esign-rest-api/quickstart/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    • 2020-08-17
    • 2019-03-16
    • 2022-08-16
    • 2018-09-13
    • 1970-01-01
    • 2021-09-28
    相关资源
    最近更新 更多