【发布时间】:2011-04-19 18:55:14
【问题描述】:
我正在尝试使用 Python 对 Amazon 的 SimpleDB 服务进行 API 调用。例如,我正在使用最简单的请求,ListDomains。但是,无论我尝试什么,响应始终是“我们计算的请求签名与您提供的签名不匹配。”
这是我正在签名的字符串(根据documentation here):
GET
https://sdb.amazonaws.com/
/
AWSAccessKeyId=<redacted>&Action=ListDomains&SignatureMethod=HmacSHA1&SignatureVersion=2&Timestamp=2011-04-19T18%3A50%3A43&Version=2009-04-15
我正在使用以下代码对其进行签名:
import base64,hashlib,hmac,time
# Sign the request
signature = hmac.new(
key=AWS_SECRET_ACCESS_KEY,
msg=string_to_sign,
digestmod=hashlib.sha1).digest()
# Base64 encode the signature
signature = base64.encodestring( signature )
我已经对 HmacSHA256 和 HmacSHA1 进行了尝试。似乎没有任何效果。我做错了什么?
【问题讨论】:
-
确保正确地对所有 HTTP 参数值进行 URL 编码。