1

我为调用 lambda 函数的 API 网关服务创建了 Cognito 用户池授权方。授权者被完全忽略,我可以在没有任何令牌的情况下调用服务。我已多次部署该服务。我创建了多个网关 API,但仍然看到相同的问题。

与我有授权器工作的旧 API 相比,我能看到的唯一区别是,当我检查 API 中的“资源”选项卡时。旧服务方法 (POST) 显示授权:COGNITO_USER_POOL,所有新 API 显示授权:无。API 网关有问题还是我错过了一个步骤。

4

1 回答 1

3

要解决此问题,您应该执行以下步骤:

  1. 前往 AWS API Gateway 控制台。
  2. 选择有问题的 REST API。
  3. 单击“方法请求”选项卡。
  4. 选择“授权”选项卡旁边的下拉菜单。
  5. 选择您已通过唯一名称定义的 Cognito 用户池授权方。如果您不记得 Cognito 用户池授权者的名称,可以在 API Gateway Authorizers 部分中查找。
  6. 选择授权方,保存更改,然后重新部署 API。
  7. 从 POSTMAN(或任何 REST 客户端)或浏览器中测试 REST API。
  8. 如果您不提供来自 Cognito 的 JWT 令牌,您将收到 HTTP 401 Unauthorized 错误。

是的,你确实是对的。您正面临授权者无法运行的问题,因为授权者未链接到 REST API。要链接它,您需要从“方法请求”选项卡手动完成。还有一点需要注意的是,授权者可以在 API Gateway 中的多个 REST API 之间重复使用。

于 2019-06-26T07:03:59.400 回答