DocuSign 在通过代码生成 oauth 令牌和访问令牌时询问凭据

DocuSign asking for credentials while generating oauth token and access token through code

当我尝试通过 API 创建 oauth 令牌时,它要求我先打开浏览器并登录,然后我收到 oauth 令牌。

会话也会在几分钟后将我注销。

有没有直接的方法通过pythonAPI创建oauth token和access token? 我检查了 docusign python SDK,但没有找到任何直接方法。

如有任何帮助,我们将不胜感激。

使用 JWT Authentication,每个用户只需要一次。这是因为用户必须同意应用程序代表他们进行 API 调用。 一旦解决了这个问题,您就可以直接使用 Python API 获取 OAUth 令牌,而无需用户或浏览器。

这是一个小代码片段:

    cls.ds_app = api_client.request_jwt_user_token(
        client_id=DS_JWT["ds_client_id"],
        user_id=DS_JWT["ds_impersonated_user_id"],
        oauth_host_name=DS_JWT["authorization_server"],
        private_key_bytes=private_key,
        expires_in=3600

虽然 JWT 流可用于在没有任何用户交互的情况下获取访问令牌,但如果用户在场,则不应使用它。

关于授权代码授予流程的注意事项:它包含一个 refresh token,如果先前的访问令牌已过期,可用于生成新的访问令牌。

这意味着您的用户只需使用 DocuSign 进行一次身份验证。之后,刷新令牌可用于生成新的访问令牌。一些细则:您需要请求 extended 范围,并且您需要至少每 30 天生成一次新的访问令牌。

已添加

授予授权码的好处:

  • 用户可选择是否认证
  • 如果在身份验证过程中引入单点登录 (SSO)、2 因素身份验证或其他 InfoSec 措施,那么您的应用程序将自动支持新措施。对于 JWT 授予,情况并非如此。

    例如,您的公司安装了单点登录系统以提高易用性、更好地监控应用程序使用情况等。如果您的应用程序使用 DocuSign 授权码授权,那么您的应用程序将自动支持新的单点登录系统,无需任何更改。如果您的应用使用 JWT 授权,则不正确。

刷新令牌:刷新令牌最近 30 天。如果您请求 extended 范围,则每次使用时刷新令牌本身都会刷新(额外 30 天)。因此,如果您至少每 30 天创建一次新的访问令牌(使用刷新令牌),用户将永远不需要重新进行身份验证。

JWT 授权:如果没有用户,则使用此 OAuth 流程。 JWT grant 提供的信息安全性稍差,因为它使您的应用程序能够模拟用户。如果用户在场并且可以进行身份​​验证,则不需要也不应使用 JWT 授权提供的额外级别的授权——信息安全的理念之一是在合理的情况下保持保守。

如果不需要使用 JWT grant 就不要使用它。

JWT 授权的好处是不需要人来完成授权过程。