【发布时间】: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