amazon-web-services - 为什么 AWS ID 池身份验证角色选择在这两种方法中都失败?也放大
问题描述
我最初使用默认角色设置身份池,并在经过身份验证的角色中添加了 AWS 托管 AdministratorAccess 策略。这很好用,我收到了 Cognito 用户的临时凭证和 CRUD 评估,但我需要其他具有不同权限级别的用户组。首先,我在 Cognito 用户池中设置了一个管理员组,并为其分配了自定义 fullAdmin IAM 角色,其中包括 AdministratorAccess。
当我在身份池身份验证角色选择中使用这两种方法时,这将失败。我正在使用 AWS 控制台。错误是:
NotAuthorizedException: Unauthenticated access is not supported for this identity pool
对于角色解析,我想使用拒绝。
如果我选择将默认身份验证角色与 AdministratorAccess 策略一起使用的选项,那么它可以工作,我具有管理员访问权限,但这意味着它无法识别我的规则或令牌方法。那很不好。
我认为我的代码有效,因为默认方法有效,但不确定。我的代码是否必须不同才能使用规则或令牌来获取用户组?
也许我只有这个问题:
我正在使用 AWS Amplify 获取当前用户会话,其中包括访问和 id 令牌。
Auth.currentCredentials()
文档推荐 AWS.CognitoIdentityCredentials。可能cognito:groups
在规则中使用声明或使用令牌方法不起作用,因为身份池无法读取会话属性。对象可能不同。我一直在尝试设置 AWS.CognitoIdentityCredentials 来测试它,但到目前为止这在我的代码中不起作用。AWS 无法从 AWS-sdk 导入而不会造成混乱,因此我从 @aws-amplify/core 导入它。我所有的代码都是从那里设置的。
在我的 JavaScript / Angular 代码中,它从 ID 令牌中检索组:
user.signInUserSession.idToken.payload['cognito:groups'];
对于我尝试过的索赔,signInUserSession.idToken.payload['cognito:groups']
但这也不起作用。网上的少量信息仅提供 cognito:groups 作为声明选项,但这不起作用。
有关解决方案或故障排除的任何想法?
解决方案
答案很简单。我删除了一个身份池并创建了一个新的。但是,我忘记了我需要更新与该身份池一起使用的 IAM 中每个角色的身份池 ID。
这意味着转到您在身份池中使用的角色,单击信任关系选项卡,编辑,并在其中显示 StringEquals 确保您拥有此密钥cognito-identity.amazonaws.com:aud
和您的身份池 ID 作为值us-west-2:e8340b.....
推荐阅读
- python - print(file.read()) 的用途是什么
- amazon-ec2 - AWS EC2 实例自托管 webapi 安装 ssl 证书
- c# - 如何仅在 C# 编辑器 IntelliSense 中隐藏公共类?
- ios - 在 Xcode 11 中添加对本地 swift 包的依赖
- javascript - 如何设置图表以使用 javascript 解构正确显示信息?
- windows - 不同语言的 Windows 安全帐户 - 用户,每个人.. - Icacls
- batch-file - 相同的启动命令,不同的结果
- sql - 子查询列太多:查找花费最多的客户最常购买的商品
- c# - C#关于线条图形和屏幕大小的问题
- python - 根据另一列覆盖数据框中的数据