我正在使用Amazon SES尝试通过HTTP Post发送电子邮件,例如:
https://email.us-east-1.amazonaws.com/?Action=SendEmail&Source=user%40example.com&Destination.ToAddresses.member.1=allan%40example.com&Message.Subject.Data=This%20is%20the%20subject%20line.&Message.Body.Text.Data=Hello.%20I%20hope%20you%20are%20having%20a%20good%20day.
但是,在HTTP标头中,它要求进行X-Amzn-Authorization,包括:
X-Amzn-Authorization: AWS3-HTTPS AWSAccessKeyId=<Your AWS Access Key ID>, Algorithm=HmacSHA256, Signature=<Signature>
我想知道如何计算签名?仅仅是我的秘密访问密钥吗?
Amazon Documentation Site上的此处显示。
最佳答案
否-您的秘密访问密钥出于某种原因是秘密的。永远不要将其通过网络,否则,您将获得嗅探它的任何人对您的AWS账户的完全访问权限-他们可以使用它来关闭您的所有保险,删除整个S3存储桶-一切。
签名是“签名请求”。您可以获取请求的内容,并使用您的机密作为哈希密钥来创建用于消息身份验证代码(HMAC)的密钥哈希。由于您的秘密密钥仅由您和Amazon知道,因此当亚马逊收到请求时,他们还将获取您的请求的内容并根据您的秘密密钥对其进行哈希处理-如果它们与您的签名请求具有相同的哈希值,则他们知道该请求没有被篡改。如果它们不同,则该请求可能已被恶意篡改或破坏,因此他们将拒绝该请求。
此处有更多详细信息:
https://www.jokecamp.com/blog/examples-of-creating-base64-hashes-using-hmac-sha256-in-different-languages/
包括用于计算HMAC的代码。