gpt4 book ai didi

java - 使用 AWS ApiGateway 签名的 URL

转载 作者:太空宇宙 更新时间:2023-11-04 11:33:01 25 4
gpt4 key购买 nike

我正在使用 AWS SignV4 签署调用 AWS API Gateway 的请求。使用带 header 的请求不适合我的用例,因此主动使用签名网址和查询字符串。

我用过AWS Sample Python非常适合 IAM 用户创建的示例。

两种情况(IAM 创建、API 网关调用)都使用相同的访问 key 和 key ,因此绝对不是访问 key / key 错误的问题。

我看到的主要问题是我得到的签名与 API Gateway 认为我应该发送的签名不同。

我已经添加了所有记录的查询字符串,但仍然收到以下错误。

我在这里缺少什么?

这是请求 URL:

https://*******.execute-api.us-east-1.amazonaws.com/******?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=**********%2F20170424%2Fus-east-1%2Fexecute-api%2Faws4_request&X-Amz-Date=20170424T124521Z&X-Amz-Expires=60&X-Amz-SignedHeaders=host&X-Amz-Signature=**********821742cee7661ef3a0ab1e5c

将其与execute-api 服务一起使用时,我收到以下错误:

{
"message": "The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.\n\nThe Canonical String for this request should have been\n'GET\n/*******\nX-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=*********%2F20170424%2Fus-east-1%2Fexecute-api%2Faws4_request&X-Amz-Date=20170424T124521Z&X-Amz-Expires=60&X-Amz-SignedHeaders=host\nhost:*******.execute-api.us-east-1.amazonaws.com\n\nhost\n*********'\n\nThe String-to-Sign should have been\n'AWS4-HMAC-SHA256\n20170424T124521Z\n20170424/us-east-1/execute-api/aws4_request\n**********'\n"
}

我还使用以下示例检查了 java 实现:AWS Signer Java但结果是一样的。

最佳答案

SigV4 签名和此错误消息并不是 API Gateway 本身特有的任何内容。 AWS 端的签名算法和验证对于所有 AWS 服务都是通用的。

您能否将错误消息中的规范字符串与发送请求时生成的规范字符串进行比较?这应该可以帮助您确定问题。

此外,请浏览 step-by-step explanation看看你是否做的一切都是正确的。常见问题之一是 header 名称的大小写敏感性和参数的排序顺序。

关于java - 使用 AWS ApiGateway 签名的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43589418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com