我需要从我的后端(Node.js)获取所有用户。但是当我试图进行身份验证时,我得到了:
错误AccessDeniedException,User ... assume-role / Cognito_XXXUnauth_Role / CognitoIdentityCredentials无权执行:cognito-idp:AdminInitiateAuth ...
我目前的代码:
let cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider()
var params = {
AuthFlow: 'ADMIN_NO_SRP_AUTH',
ClientId: process.env.AWS_CLIENT_ID,
UserPoolId: process.env.AWS_USER_POOL_ID,
AuthParameters: {
USERNAME: '...'
PASSWORD: '...'
}
}
cognitoidentityserviceprovider.adminInitiateAuth(params, (err, result) => { ... })
看起来我没有登录,因为使用了Cognito_XXXUnath_Role
。有人有类似的问题吗?
答案 0 :(得分:1)
您正在尝试使用Cognito Federated Identity凭据提供程序来创建CognitoIdentityServiceProvider服务客户端。这将使AWS SDK调用联合身份服务以获取将用于呼叫cognitoidentityserviceprovider.adminInitiateAuth(...)
的临时AWS凭证。
在这种情况下,有两种可能的解决方案:
adminInitiateAuth
API访问权限的凭据。既然您关心从后端执行此操作,那么这样做应该是安全的。 This guide可以为您提供帮助。cognito-idp:AdminInitiateAuth
。答案 1 :(得分:0)
如果您使用的是无服务器框架,则以下设置应可修复错误:
provider:
# you can add statements to the Lambda function's IAM Role here
iamRoleStatements:
- Effect: "Allow"
Action:
- "cognito-idp:AdminInitiateAuth"
Resource:
- "arn:aws:cognito-idp:*"