aws-api-gateway - 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”:“-”}
谢谢。任何帮助表示赞赏。
解决方案
原来抄袭也是一个非常愚蠢的错误access_token
。正确id_token
地它起作用了。花了我2天时间才弄明白!!!
推荐阅读
- javascript - Workday OAuth - 错误未经授权的客户端
- ios - Swift-NIO 安全的 websocket 服务器
- spring - 使用 java config 的 Spring 批处理流声明
- sql-server - SQL Server SQL 到 PostgreSQL SQL
- java - 如何在 Spring Boot 中从 application.properties 转换为 application.yml?
- c# - 启用的方法似乎不适用于我的游戏对象组件?
- google-cloud-platform - Stackdriver Logging 客户端库 - Google 停机期间会发生什么?
- python - IllegalArgumentException:输入列 cityIndex 应该至少有两个不同的值
- haskell - Haskell:在函数内的do块之后使用多个let并返回一个值
- c# - 通过 Bootstrapper OnStartUp 将 Repository 注入 ShellViewModel