设置授权者后,Cognito用户池不显示API网关

时间:2019-06-26 04:26:50

标签: amazon-web-services aws-api-gateway amazon-cognito lambda-authorizer

我已经为调用lambda函数的API网关服务创建了一个Cognito用户poool授权器。 授权者将被完全忽略,并且我能够在没有任何令牌的情况下调用该服务。 我已经多次部署了该服务。 我创建了多个网关API,但仍然遇到相同的问题。

在与较旧的API进行比较时,我可以看到授权者在其中工作,唯一的区别是,当我检查API中的“资源”选项卡时。 旧的服务方法(POST)显示 授权:COGNITO_USER_POOL 并且所有新API均显示“授权:无”。 API网关有问题吗?还是我错过了一步?

1 个答案:

答案 0 :(得分:1)

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

  1. 转到AWS API Gateway控制台。
  2. 选择有问题的REST API。
  3. 点击“ 方法请求”标签。
  4. 选择“授权”标签旁边的下拉菜单。
  5. 选择由唯一名称定义的Cognito用户池授权者。如果您不记得Cognito用户池授权者的名称,则可以在“ API网关授权者”部分中查找它。
  6. 选择授权者,保存更改,然后重新部署API。
  7. 从POSTMAN(或任何REST Client)或浏览器中测试REST API。
  8. 如果不提供Cognito的JWT令牌,则会收到HTTP 401未经授权的错误。

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