我正在开发一个带有REST后端的页面应用程序,该应用程序使用AWS认知技术进行用户管理和身份验证。
我的结构是这样的:当用户在没有令牌的情况下进入页面时,会执行以下一系列步骤:
sessionStorage中我希望在我的应用程序中有两个用户角色:用户和管理员。不应该允许用户调用任何AWS服务,在AWS服务中,应该允许管理员代表他的公司创建/邀请其他用户并将其提升到Admins。
目前,我已经为用户池和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应用程序的所有用户都拥有管理权限,因为IAM角色是与标识池而不是用户本身相关联的。
有甚麽简单的方法可以做到这一点呢?
如果有什么不清楚的地方,请随时提出问题,并提前感谢您的帮助。
发布于 2018-09-10 13:03:15
我终于找到了解决办法。如果有人遇到和我一样的问题,你可以去仪表板上找你的认知身份池,然后编辑它。
有一个名为身份验证提供程序的部分,您可以在其中指定索赔的条件,并在此基础上提供角色。在同一页上,您还可以编辑哪些角色给未经过身份验证的用户,哪些角色授予身份验证的用户,但不满足指定的任何条件。
在我的示例中,我向所有经过身份验证的用户提供了用户角色,并创建了如下图所示的条件,即授予所有在“定制:角色”中具有" Admin“值的用户充当Admin的角色。

https://stackoverflow.com/questions/51086397
复制相似问题