首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript中的AWS认证

JavaScript中的AWS认证
EN

Stack Overflow用户
提问于 2018-06-28 15:16:19
回答 1查看 482关注 0票数 0

我正在开发一个带有REST后端的页面应用程序,该应用程序使用AWS认知技术进行用户管理和身份验证。

我的结构是这样的:当用户在没有令牌的情况下进入页面时,会执行以下一系列步骤:

  1. 重定向到科尼图的默认登录页面
  2. 用户登录并重定向到host/authenticate.html。
  3. AJAX调用被发送到科尼托的令牌端点,后者返回用户的令牌。这些存储在sessionStorage
  4. 用户被重定向到web应用程序,现在进行身份验证。

我希望在我的应用程序中有两个用户角色:用户和管理员。不应该允许用户调用任何AWS服务,在AWS服务中,应该允许管理员代表他的公司创建/邀请其他用户并将其提升到Admins。

目前,我已经为用户池和web应用程序设置了一个标识池,它启用了管理权限。我使用以下代码使用标识池进行身份验证:

代码语言:javascript
复制
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();

});

当管理员想要创建一个用户时:

代码语言:javascript
复制
cisp.adminCreateUser(params, function(err, data) {
    if (err) 
        console.log(err, err.stack);
    else
        console.log(data);
});

但是,根据我的理解,这将允许web应用程序的所有用户都拥有管理权限,因为IAM角色是与标识池而不是用户本身相关联的。

有甚麽简单的方法可以做到这一点呢?

如果有什么不清楚的地方,请随时提出问题,并提前感谢您的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-10 13:03:15

我终于找到了解决办法。如果有人遇到和我一样的问题,你可以去仪表板上找你的认知身份池,然后编辑它。

有一个名为身份验证提供程序的部分,您可以在其中指定索赔的条件,并在此基础上提供角色。在同一页上,您还可以编辑哪些角色给未经过身份验证的用户,哪些角色授予身份验证的用户,但不满足指定的任何条件。

在我的示例中,我向所有经过身份验证的用户提供了用户角色,并创建了如下图所示的条件,即授予所有在“定制:角色”中具有" Admin“值的用户充当Admin的角色。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51086397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档