Oauth 2.0 AWS Cognito-在授权访问api网关时使用作用域
我已经设置了一个Cognito用户池,以便可以使用它来授权访问api网关。它使用OAUTH2,im使用的流程是:授权码授权, 范围:电子邮件、openid和个人资料, 允许的自定义范围:产品api/读取产品、产品api/创建产品、产品api/删除产品 我使用boto3 admin\u initiate\u auth命令连接到用户池:-Oauth 2.0 AWS Cognito-在授权访问api网关时使用作用域,oauth-2.0,boto3,amazon-cognito,Oauth 2.0,Boto3,Amazon Cognito,我已经设置了一个Cognito用户池,以便可以使用它来授权访问api网关。它使用OAUTH2,im使用的流程是:授权码授权, 范围:电子邮件、openid和个人资料, 允许的自定义范围:产品api/读取产品、产品api/创建产品、产品api/删除产品 我使用boto3 admin\u initiate\u auth命令连接到用户池:- response = idpclient.admin_initiate_auth( UserPoolId=USERPOOLID, AuthFlow='ADMIN_
response = idpclient.admin_initiate_auth(
UserPoolId=USERPOOLID,
AuthFlow='ADMIN_NO_SRP_AUTH',
AuthParameters={
'USERNAME':USERNAME,
'PASSWORD':PASSWORD,
'SECRET_HASH':SECRET_HASH
},
ClientId=APPCLIENTID
)
我收到的响应是一个json对象,有几个字段,包括访问令牌、刷新令牌等
但是当我使用access_令牌访问api网关时,我得到了一个401错误。未经授权。查看access_令牌,似乎还没有添加自定义作用域
您能告诉我为什么自定义作用域没有添加到access_令牌中,以及如何添加自定义作用域吗
api网关添加了lambda授权程序。通常您必须在两个位置指定作用域:
- AWS控制台Cognito部分中客户端应用程序的OAuth客户端条目
- 请求令牌的代码-我总是以基于标准的方式实现这一点,而您使用的是AWS特定的解决方案
虽然不确定这种类型的解决方案是否适用于您..这是一个愚蠢的问题,但您试图在API网关上访问的资源是否在您的自定义范围内?谢谢您的回答!是的,我查过了。谢谢你的提醒,谢谢你的回复!关于管理、启动和授权。。。我怀疑这可能是真的。虽然这听起来很奇怪,但我没有想到我需要在代码中添加自定义作用域。我要看一看boto3的文档,看看是否可以添加范围。如果没有,我可能不得不以某种方式使用python请求对象与cognito连接,并以这种方式获取访问\u令牌。。。再次感谢你的帮助