尝试为API网关设置用户池身份验证

时间:2018-07-12 04:04:15

标签: postman aws-api-gateway amazon-cognito

我正在尝试使用Cognito用户池在API上设置安全性。我回来了401未经授权。

API和用户池已存在,并且我一直在使用用户池登录到应用程序。我现在正在尝试保护API调用。

我在API上创建了授权者,

Authorizer

然后我将授权者添加到API中的一种GET方法中

enter image description here

然后,我终于尝试在Postman中测试API。我正在使用AWS Signature授权。

enter image description here

调用该方法将返回401。该方法以前运行时没有安全性,并且关闭授权者会使它再次工作(无安全性)。

有什么主意我想走的步骤吗?

2 个答案:

答案 0 :(得分:1)

AWS Signature授权与自定义授权者不同。

AWS Signature授权(邮递员)请求AWS AccessKey和SecretKey对请求进行身份验证。这对应于API网关中的IAM Authentication。通过IAM接收AccessKey和SecretKey。

自定义授权者使用由您指定的Cognito用户池发出的名为#id_token的{​​{3}}。要测试令牌的有效性,请转到自定义授权者并单击“测试”,然后将令牌复制并粘贴到文本区域。

执行自定义授权者身份验证的方法是:

  1. 按照JWT
  2. 从您的用户池中获取#id_token
  3. 使用Cognito自定义授权者配置API网关,并将您的用户池作为源(似乎您已正确完成)
  4. 使用OAuth 2.0作为邮递员的授权,并将您的#id_token作为访问令牌,或添加标头:Authorization,其值为Bearer和{{1} }

如果要我添加AWS Signature Auth Flow,请放弃评论。

答案 1 :(得分:0)

要在使用Cognito用户池时使用Postman授权,请选择No Auth。然后添加标头Authorization(授权者的令牌源字段中的值)并将id_token复制到该标头值中。除此以外,我无需添加其他任何东西(即无需承载)。