收到错误: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 网关:缺少身份验证令牌

如何在 AWS API Gateway 中调试“缺少身份验证令牌”?

AFNetworking 和身份验证令牌错误代码 -1011

使用来自 Angular JS 的 Web API 令牌身份验证时出现错误请求 (400)

使用访问令牌时,salesforce rest api 无效会话 id 错误

设计用户登录为 CSRF 令牌真实性令牌提供身份验证错误