Amazon web services 缺少所有自定义作用域的AWS Cognito AdminInitiateAuth
我有一个cognito用户池,配置了AWS::cognito::UserPoolResourceServer和作用域列表,所有这些作用域都是在UserPoolClient->AllowedOAuthScopes上启用的。当我进行UI身份验证时,令牌包含一个作用域列表Amazon web services 缺少所有自定义作用域的AWS Cognito AdminInitiateAuth,amazon-web-services,amazon-cognito,Amazon Web Services,Amazon Cognito,我有一个cognito用户池,配置了AWS::cognito::UserPoolResourceServer和作用域列表,所有这些作用域都是在UserPoolClient->AllowedOAuthScopes上启用的。当我进行UI身份验证时,令牌包含一个作用域列表 "scope": "aws.cognito.signin.user.admin labs-mymoney-bills-api/view labs-mymoney-bills-api/edit openid profile labs
"scope": "aws.cognito.signin.user.admin labs-mymoney-bills-api/view labs-mymoney-bills-api/edit openid profile labs-mymoney-bills-api/pay email",
出于测试目的,我使用adminInitiateAuth获取令牌,并使用以下参数
var authParams = {
AuthFlow: 'ADMIN_USER_PASSWORD_AUTH',
ClientId: 'myclientid',
UserPoolId: 'myuserpool',
AuthParameters: {
USERNAME: 'myuser',
PASSWORD: 'herpassword'
}
};
结果标记的作用域如下所示
"scope": "aws.cognito.signin.user.admin",
显然,当我尝试使用定义了作用域的API端点进行身份验证时,它总是未经授权的
这是一个错误,或者我做错了什么,或者有不切实际的期望
谢谢我相信这不是一个bug,而是经过设计的。只有通过Oauth端点进行身份验证时,才会返回Cognito自定义范围。创建Cognito域时,Cognito将创建一个托管UI/授权服务器,该服务器公开Oauth端点。正确配置后,通过这些端点登录将返回访问令牌中的自定义作用域 通过initiate Auth或admin initiate Auth登录不是通过Oauth端点进行的,因此Oauth自定义范围将不包括在令牌中
我希望这有帮助。您可以通过设置HostedUI并登录来测试这一点。您将收到的令牌应该包含作用域。谢谢,但是,我发现它是有线的,admin auth token有什么意义,如果它不允许您访问您的东西……您说的“admin auth token”是指什么?aws.cognito.signin.user.admin作用域允许您调用cognito来更新用户属性等。没有这个作用域,您可以使用令牌来授权对您自己的资源服务器或APIGateway的请求,例如。