我已经创建了一个认知用户池,并配置了一个API网关。当我用ID令牌测试授权程序时,它可以授权,但我需要授权访问令牌并检查特定范围:aws.cognito.signin.user.admin
根据我的理解(这可能是错误的),如果我设置了OAuth作用域,那么授权人将把令牌读入访问令牌而不是id令牌。
我的API上有一个具有以下授权设置的方法:

我检查了访问令牌的JWT,并确认它包括:
"token_use": "access"
"scope": "aws.cognito.signin.user.admin openid profile email"
当我到达端点时,我收到一条401消息:未经授权
我已经对AWS文档和堆栈溢出进行了几天的深入研究,并且无法弄清楚授权的最后一部分,如果能为检查的东西提供任何帮助,我们将不胜感激。因为这是我第一次使用这种技术,我肯定我只是错过了一些简单的配置。
发布于 2022-09-21 19:24:15
解决方案:您的API方法-没有OAuth作用域。如果要使用访问令牌而不是id令牌,则添加OAuth作用域。
使用COGNITO_USER_POOLS授权器时,如果未指定OAuth Scopes选项,则against将提供的令牌视为身份令牌,并根据来自用户池的标识验证声明的标识。否则,API网关将提供的令牌视为访问令牌,并根据方法上声明的授权范围验证令牌中声明的访问范围。
Amazon (https://aws.amazon.com/premiumsupport/knowledge-center/cognito-custom-scopes-api-gateway/)是不正确的- curl命令不包括授权头的前缀。它也没有说明您必须在API方法中添加OAuth作用域。
https://stackoverflow.com/questions/71982492
复制相似问题