首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用请求实现DocuS传身份验证

使用请求实现DocuS传身份验证
EN

Stack Overflow用户
提问于 2022-02-24 16:24:24
回答 1查看 205关注 0票数 0

我正在为空字节 连接器创建DocuS传的电子签名Rest

实现连接器的部分过程是编写一个从AuthBase扩展requests.auth类的身份验证例程。

问题是Docusign 不支持用于JWT授权的刷新令牌。根据docusign文档

JWT授予的访问令牌在一个小时后到期,并且不提供刷新令牌。在令牌过期后,您必须生成一个新的JWT并将其交换为一个新的访问令牌。 您可以重用大部分旧断言,只需修改IAT和EXP值并更新签名,然后提交更新的JWT以获得新的访问令牌。一般来说,使用JWT的应用程序应该在现有的访问令牌到期前15分钟获得一个新的访问令牌。

但是,请求文件的这一部分(链接到requests-authlib文档中的此页 )中的“后端应用程序流”中的所有示例似乎只允许包含刷新令牌的Auth2工作流。

我如何解决这个问题,以便每次刷新令牌过期时都会发出新请求(使用更新的IAT EXP和签名)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-24 20:45:27

刷新令牌是OAuth授权代码授予流的一个特性。

授权代码授予流要求人对自己进行身份验证。结果是一个8小时访问令牌和一个30天刷新令牌。

若要获得新的访问令牌,请执行以下操作:

  • 让人类再次验证
  • 或者应用程序可以使用刷新令牌来获得新的访问令牌。这可以由应用程序自主完成,而不会打扰人类。

用于JWT授权流,没有人和刷新令牌。相反,应用程序只是重新运行JWT授权流,并接收一个新的1小时访问令牌。

当您重新执行JWT流时,创建一个新的JWT (更新的IAT、EXP等)。用您的私钥签名,并将其发送到DocuSign以获得新的访问令牌。

JWT操作足够便宜,每个模拟用户每小时执行一次。但是您必须缓存访问令牌和,而不是,为每个API调用重新执行JWT授权流.

Python身份验证库

大多数语言的大多数身份验证库都集中在授权代码授予流上,因为这是最常用的OAuth流。

但是,正如您已经指出的,您使用的是JWT流。这意味着您不能使用这些库。相反,你需要自己滚动。好消息是这并不难。这是我的伪代码:

代码语言:javascript
复制
Send_an_API_request(url, request_details, etc):
   access_token = Get_access_token(user_id);
   api_results = send_api_request(access_token, url, request_details, etc)
   return api_results;

Get_access_token(user_id):
    (access_token, expire_time) = database_lookup(user_id);
    # if access_token is about to expire or we don't have one,
    # create a new access_token and store it
    if (
        ((current_time + 10minutes) > expire_time)
        or
        (access_token is null)
       ):
        # Make a new JWT request
        jwt = make_jwt(user_id);
        signed_jwt = sign(jwt, private_key)
        (access_token, expire_sec) = send_jwt_request(signed_jwt)
        database_store (user_id, access_token, current_time + expire_sec)
    return access_token

已添加

回复:

我需要从AuthBase扩展requests.auth类

如果应用程序的体系结构要求您扩展AuthBase类,那么您将需要在AuthBase类中实现JWT授权流。

如果AuthBase类不允许您访问JWT授予流所需的数据,那么就需要将所需的数据填充到诸如“刷新令牌”这样的可用属性中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71255162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档