我正在开发一个带有REST后端的单页面应用程序,该后端使用AWS Cognito进行用户管理和身份验证。
我已对其进行了结构化,以便当用户在没有令牌的情况下进入页面时,会发生以下一系列步骤:
sessionStorage
中我希望在我的应用程序中有两个用户角色:用户和管理员。不应允许用户呼叫任何AWS服务,其中应允许管理员代表其公司创建/邀请并将其他用户提升为管理员。
目前,我已为用户池和Web应用程序设置了一个标识池,用于启用管理员权限。我使用以下代码对身份池进行身份验证:
AWS.config.region = "eu-central-1";
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'eu-central-1:<my-indentitypool-id>',
Logins: {
'cognito-idp.eu-central-1.amazonaws.com/<my-userpool-id>':
sessionStorage.getItem('id_token')
}
});
AWS.config.credentials.get(function(err){
if (err) {
console.error(err);
}
console.log("Authenticated");
cisp = new AWS.CognitoIdentityServiceProvider();
});
当管理员想要创建用户时:
cisp.adminCreateUser(params, function(err, data) {
if (err)
console.log(err, err.stack);
else
console.log(data);
});
但是,根据我的理解,这将允许Web应用程序的所有用户具有Admin权限,因为IAM角色与身份池相关联,而不是用户本身。
有没有简单的方法来实现这一目标?
如果有任何不清楚的地方,请随时提出问题,并提前感谢您的帮助。