【问题标题】:How to change timestamp and nonce in Requests-OAuthlib?如何更改 Requests-OAuthlib 中的时间戳和随机数?
【发布时间】:2017-07-09 20:21:41
【问题描述】:

我正在尝试从 upwork 的 api 获取一些数据。 我正在使用 Requests-OAuthlib 。对于一个 API 请求,它可以工作,但对于第二个,我收到此错误:“重复的时间戳/随机数组合,可能的重放攻击。请求被拒绝。” 因此,我尝试通过将其放入构造函数中来修改 Requests-OAuthlib 并手动更改时间戳和随机数:

        ur = u''+str(SystemRandom().random())
        ur = ur.replace("0.","")
        self.client.nonce = ur
        ts = u'' + str(int(time()))
        self.client.timestamp = ts

就在 self.client = client_class( ... 但它仍然不起作用。 我是 python 和 OAuth 的初学者,所以我宁愿使用这个库而不是手动构建请求 url。

这里是库Requests-OAuthlib source code的源代码

如果我在 call 结束时打印它们,它们的值与我设置的值相同,但设置它们似乎没有效果,upwork 仍然表示重放攻击。 我也尝试将它们放在标题中,但仍然无法正常工作

r.headers['oauth_nonce'] = ur
r.headers['oauth_timestamp'] = ts

更新: 我打印了 r.headers,它包含这些:

第一次通话

oauth_nonce="55156586115444478931487605669", oauth_timestamp="1487605669"

第二次通话

oauth_nonce="117844793977954758411487605670", oauth_timestamp="1487605670"

Nonce 和时间戳彼此不同。那么为什么 upwork 给了我:“重复的时间戳/随机数组合,可能的重放攻击。请求被拒绝。” ?

Update2:可能只是一些疯狂的工作行为,仍在等待他们的答复。我相信,因为如果我更改端点中的某些内容,它就会起作用,所以 nonces/timestamps 似乎与问题无关。

Update3:我得到了 upwork 的答复。真诚地,我无法理解答案,但如果您认为这是有道理的,您可以关闭这个问题。无论如何,我找到了解决方法。 https://community.upwork.com/t5/API-Questions-Answers/Wrong-API-error-message/td-p/306489

【问题讨论】:

  • 你做了什么来解决这个重复的时间戳/随机数组合,可能的重放攻击。请求被拒绝。错误?
  • 对不起,我不记得了,这是很久以前的一次性工作,我不太使用 OAuth

标签: python oauth timestamp nonce


【解决方案1】:

对于遇到此问题的任何人,我都用头撞了几个小时,直到我最终使用 Fiddler 查看请求和响应。

服务器以 302 重定向响应,我的 http 库有助于跟踪重定向并发送相同的标头 - 其中当然包括重复的 nonce 和时间戳。

【讨论】:

    猜你喜欢
    • 2014-09-18
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 2017-06-28
    • 2015-04-20
    • 1970-01-01
    • 2012-06-16
    • 2019-04-05
    相关资源
    最近更新 更多