【发布时间】:2019-07-02 01:31:23
【问题描述】:
var client = new AmazonCognitoIdentityProviderClient("MYKEY", "MYSECRET", RegionEndpoint.USEast1);
var request = new AdminGetUserRequest();
request.Username = "USERNAME";
request.UserPoolId = "POOLID";
var user = client.AdminGetUserAsync(request).Result;
密钥/机密正在以具有管理员访问权限的用户身份进行身份验证。为了更好地衡量,我还为其提供了 AmazonCognitoPowerUser 政策。
区域端点正确,与我的用户池所在的端点相同。用户池 ID 正确。用户池 ID 的第一部分与区域匹配。
我不知道还有什么地方可能出错。有什么想法吗?
2019 年 8 月 2 日更新
手动 CLI 命令:
PM> aws cognito-idp list-user-pools --region us-east-1 --max-results 10
{
"UserPools": []
}
地区是正确的,所以一定是权限有问题。有什么我可以尝试调整池的,或者我可能需要添加到用户的其他策略?
【问题讨论】:
-
假设您的 CLI 配置了与您的应用相同的凭据,您可以输入
aws cognito-idp list-user-pools --region us-east-1 --max-results 10并检查结果吗? -
顺便说一句,代码中的硬编码访问密钥和密钥被认为是一种糟糕的安全做法。我们强烈建议您改用 IAM 角色。
-
@SébastienStormacq 在主帖中更新。另外,这不是生产代码,凭据会被移动,我只需要先让它以最简单的形式工作。
-
感谢您的更新。假设您的 CLI 和代码使用相同的凭据,您看到的错误消息是正确的:该区域中没有与该帐户关联的 Cognito 用户池。如果您从 AWS 控制台看到 Cognito 用户池,请问自己“我在哪个区域?”和“与此帐户关联的访问密钥/密钥是什么?”
-
有。我已为该 IAM 用户添加了控制台访问权限,为 us-east-1 加载了 cognito,我可以查看和编辑用户池。使用相同的 IAM 用户,为什么我可以在控制台中看到它,使用控制台凭证登录,而不是通过 CLI 或以编程方式使用访问密钥/密钥?
标签: c# amazon-web-services amazon-cognito