首页 > 解决方案 > API 网关 Cognito 用户池授权者 - 401 未授权

问题描述

我试图让我的 API 网关与 Cognito 用户池授权方一起工作,但我似乎无法让它工作。到目前为止,我没有使用任何 SDK。一些细节 - 对于 Cognito 池,我将 ID 提供者设置为 cognito 用户池,Oauth 流“隐式授权”和范围设置为“openid”。创建了一个应用程序(和域),还生成了客户端密码。电子邮件是唯一的字段。- 在 API 网关上,我为 cognito auth & header 添加了与“授权”相同的用户池。没有添加范围,也没有令牌验证。

我使用 Cognito 的默认登录页面登录并检索“id_token”(登录后出现在 URL 中)并在邮递员中使用它来将我的 API 触发为“401 未授权”。我在 API 网关授权器测试工具中使用了相同的令牌,但我仍然未经授权。很明显,我的令牌是问题所在。

我已经尝试过将 oauth 流、范围和 api 网关与 lambda 集成的各种组合,以创建另一个具有模拟集成的组合。还创建了不同的用户池和应用程序,有和没有客户端密码,同样的错误。

如果上面不起作用(相信我的错误),我会很好,但同样的事情适用于尝试过的同事。唯一的区别是,登录后,他定向到一个本地主机页面,在那里他成功捕获了相同的“id_token”并使用该令牌访问 API 网关。

所以我不知道有什么区别?它不应该按照我尝试的方式工作吗?

当我从邮递员那里访问 API 时,一些 cloudwatch 访问日志。(也试过卷曲)

{ “requestId”:“bb9ba6a2-6c25-11e8-b024-530b33bce48d”,“ip”:“xxxx”,“呼叫者”:“-”,“用户”:“-”,“requestTime”:“09/Jun/ 2018:20:43:15 +0000”、“httpMethod”:“GET”、“resourcePath”:“/test”、“status”:“401”、“protocol”:“HTTP/1.1”、“responseLength”: “26”、“authProvider”:“-”、“authType”:“-”、“claimProperty”:“-”、“property”:“-”、“principalId”:“-”}

谢谢。任何帮助表示赞赏。

标签: aws-api-gatewayamazon-cognito

解决方案


原来抄袭也是一个非常愚蠢的错误access_token。正确id_token地它起作用了。花了我2天时间才弄明白!!!


推荐阅读