当前位置: 首页 > 知识库问答 >
问题:

API网关认知用户池授权器-401未授权

陈德泽
2023-03-14

我试图让我的API网关与Cognito用户池授权器一起工作,但我似乎无法让它工作。我现在没有使用任何SDK。一些细节-对于Cognito pool,我将设置ID provider设置为Cognito user pool,Oauth flow'impilicit grant‘和scope设置为'openid'。创建了一个应用程序(&domain),还生成了客户端机密。电子邮件是唯一的字段。-在API网关上,我为cognito身份验证和头添加了与“授权”相同的用户池。未添加作用域,也未验证令牌。

我使用Cognito的默认登录页面登录并检索“id_token”(登录后出现在URL中),并在postman中使用它将我的API触发为“401 unauthorized”。我在API gateway authorizer测试工具中使用了相同的令牌&我仍然获得未授权。所以很明显我的信物是问题所在。

我已经尝试了oauth流、scopes和api gateway与lambda集成的各种组合,然后创建另一个与模拟集成的oauth流、scopes和api gateway。也创建了不同的用户池和应用程序,有和没有客户端秘密,以相同的错误。

如果上面的不工作(相信自己有错误),我会很好,但同样的事情也适用于一个尝试过的同事。唯一的区别是,在登录之后,他指向一个localhost页面,在那里他捕获了相同的'id_token'&成功地使用该令牌命中API网关。

所以我想不出有什么区别?难道它不应该像我所尝试的那样工作吗?

{“RequestId”:“BB9BA6A2-6C25-11E8-B024-530B33BCE48d”,“IP”:“X.X.X.X”,“Caller”:“-”,“User”:“-”,“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”:“PrincipalID”:“-”-“}

多谢了。感谢任何帮助。

共有1个答案

姬乐池
2023-03-14

结果是一个非常愚蠢的错误,也复制了access_token。使用正确的id_token可以工作。我花了2天才弄明白!!!

 类似资料:
  • 我正在尝试将AWSAPI网关授权器与cognito用户池一起使用。当我使用AWSAPI网关控制台进行测试时,它运行良好。 但当我尝试在api中启用授权时,它会显示请查看下面的屏幕截图 有人能帮忙吗? 仅供参考,我已经按照这里提到的说明http://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-wi

  • 我正在尝试使用aws api网关授权器和cognito用户池。当我使用aws api网关控制台进行测试时,它工作得很好。 但当我尝试在api中启用授权时,它显示请查看下面的屏幕截图 有人能帮忙吗。

  • 目前,我正在开发无服务器架构,其中AWSAPI网关中有一组资源和方法。我计划将Cognito身份验证(用户池)和授权作为安全层添加到AWS API网关。 AWS API Gateway中有3个授权者,分别是IAM、Cognito用户池和custom lambda。 在我的用例中,登录和注册(身份验证)通过API网关使用Cognoto用户池。这是完美的作品。我的用户将获得应用程序客户端id和客户端密

  • 一个简单的APIendpoint,带有一个Cognito用户池授权器,当使用授权器测试按钮(或使用邮差/失眠)和一个有效令牌失败时(截图bellow): 我知道该令牌是有效的,因为我可以使用相同的令牌成功调用Cognito用户池endpoint,并返回所需的响应。此外,删除授权程序(将其设置为),也将返回所需的响应。我试过带或不带,我还试过将令牌源更改为,这是我在一些旧问题中发现的,但保存后立即又

  • 我创建了一些Lambda函数,并使用SAM进行了部署。部署是成功的,但当试图到达endpoint时,我总是获得 即使我使用头发送正确的承载令牌。然后,如果我去Authorizer并运行测试,它会很好地通过并在CloudWatch中生成日志,但是当我从前端应用程序或REST客户端应用程序运行到endpoint的请求时,我会得到未经授权的消息,并且检查CloudWatch,就不会执行Authorize