收到错误:AWS API 请求后缺少身份验证令牌
Posted
技术标签:
【中文标题】收到错误:AWS API 请求后缺少身份验证令牌【英文标题】:Getting error: Missing Authentication Token after AWS API request 【发布时间】:2016-09-04 02:36:50 【问题描述】:我正在尝试通过 AWS API Gateway 调用 Lambda 函数。
我在尝试 IAM 身份验证、API 密钥身份验证以及未进行身份验证时遇到此错误。
"message":"Missing Authentication Token"
由于不存在端点,有些人遇到了同样的问题。但是,我直接从 Lambda 函数 AWS 控制台获取了我的终端节点。
我一直在尝试在浏览器和 Postman 中打开 URL(有和没有标头身份验证:x-api-key: **************** *)。
两者都以上述错误响应。
【问题讨论】:
如果您先在 API Gateway 中设置 API,然后将 Lambda 函数添加到 API,这是否有效? 【参考方案1】:再一步:在Postman中,你需要将Authorization设置为AWS Signature,然后输入你的AccessKey和来自您的 IAM 用户的 SecretKey:
邮递员截图
【讨论】:
有效!在 Postman 中进行测试时,请确保将请求正文设置为 Raw (application/json)。我已经忘记了。 :p 如果 OP 特定授权为 NONE,为什么需要设置 AccessKey/SecretKey?【参考方案2】:我将在此处为所有观众撰写详细的常见问题解答。按最常见的原因排序。
-
资源路径和/或 HTTP 方法不正确。
如果您拥有正确的资源路径和错误的 HTTP 方法,您仍然会看到此消息
您可以使用 Postman 或其他一些客户端来签署对同一资源/方法的请求,并且如果您收到 404,那么您肯定有错误的资源/方法。
受保护资源/方法缺少签名。默认情况下,您的 API 将是开放的。如果您明确要求 AWS Auth,则错误表明请求未签名。
如果您使用 Lambda 控制台创建“API 端点”,则可能是 Lambda 端出现问题,或者新 API 的传播出现延迟。在这种情况下,转到 API Gateway 控制台,您应该会看到 Lambda 为您创建的相同 API。 确保已部署,并且您拥有正确的阶段、资源路径和方法。
【讨论】:
【参考方案3】:只是想提一下,如果您将 API 网关的身份验证设置为 NONE
,请确保您需要先Deploy API
,然后才能使无身份验证设置生效。
【讨论】:
谢谢,这拯救了我的一天。我借此机会表达了我对 AWS API Gateway DX 有多可怕的失望【参考方案4】:您必须从 API 的操作中启用 CORS。这将创建一个新的 OPTIONS 方法。 CORS 用于跨域请求
【讨论】:
【参考方案5】:您需要将 Api Key Required 设置为 true。在此处查看更多信息:http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-api-keys.html
【讨论】:
Api Key Required = false 的行为是不抛出 403 错误。其他答案是正确的,这更多与 a) 错误的资源/方法 b) 缺少受保护资源/方法的信任以上是关于收到错误:AWS API 请求后缺少身份验证令牌的主要内容,如果未能解决你的问题,请参考以下文章
如何在 AWS API Gateway 中调试“缺少身份验证令牌”?
AFNetworking 和身份验证令牌错误代码 -1011
使用来自 Angular JS 的 Web API 令牌身份验证时出现错误请求 (400)