设置授权方后,Cognito 用户池未显示 API 网关

Cognito user pool does not show up API Gateway after setting authorizer

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

与旧的 API 相比,我让授权者工作,唯一的区别是当我检查 API 中的资源选项卡时。 旧服务方法 (POST) 显示 授权:COGNITO_USER_POOL 并且所有新的 API 都显示授权:None。 API 网关有问题还是我漏掉了一步。

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

  1. 前往 AWS API 网关控制台。
  2. Select 有问题的 REST API。
  3. 单击“方法请求”选项卡。
  4. Select "AUTHORIZATION" 选项卡旁边的 drop-down 菜单。
  5. Select 您的 Cognito 用户池授权方,您已通过唯一名称对其进行了定义。如果您不记得 Cognito 用户池授权方的名称,可以在 API 网关授权方部分进行查找。
  6. Select 授权者,保存更改,re-deploy API.
  7. 从 POSTMAN(或任何 REST 客户端)或浏览器中测试 REST API。
  8. 如果您不提供来自 Cognito 的 JWT 令牌,您将收到 HTTP 401 未授权错误。

是的,你确实是对的。您正面临授权器无法运行的问题,因为授权器未 linked 到 REST API。要 link 它,您需要从“方法请求”选项卡手动执行。另一点需要注意的是,Authorizers 可以在 API Gateway 中的多个 REST API 之间 re-used。