使用具有有效令牌的Authorizer Test按钮(或使用postman / Insomnia)时,带有Cognito用户池授权程序的简单API端点失败(屏幕截图如下):
我知道令牌是有效的,因为我可以使用相同的令牌成功调用Cognito用户池user-info
端点并获得所需的响应。同时删除授权程序(将其设置为None
)也将返回所需的响应。我已经尝试过有和没有Bearer ...
,我也尝试将Authorization
令牌源更改为method.request.header.Authorization
,因为我在some older Question中找到但是在保存后立即将其更改回Authorization
,而method.response.header.Authorization
似乎不起作用无论是。 API是通过CloudFormation堆栈部署的。
我正在编写一个完整的指南来解决这个问题,因为缺少文档,要为这么简单的任务找到正确的信息并不容易。但可能需要几天时间,所以在那之前我会在这里发一个简短的答案,一次(希望)我完成指南我会更新这个答案:
我的问题是我使用的是access_token
,但我不得不使用identity_token
!另一个问题是没有任何OAuth2工具可用(如Postman和Insomnia的Auth模块)返回或使用identity_token
,它们甚至不显示令牌!虽然它是在OAuth2规范中,没有人使用它(除了Cognito!),...
所以我对OAuth2模块的Insomnia源代码进行了一些更改并使用了正确的令牌,然后它就开始工作了!
我要为失眠做一个公关,如果它经历了这个功能可能会在下一个版本中出现,否则,我将使我的打包二进制可用,所以窥视可以使用它,否则,从AWS获取令牌是一个噩梦!