.net 检索Cognito用户的IdentityId
首先,我阅读了类似的问题:.net 检索Cognito用户的IdentityId,.net,amazon-web-services,authentication,amazon-s3,amazon-cognito,.net,Amazon Web Services,Authentication,Amazon S3,Amazon Cognito,首先,我阅读了类似的问题: 我们使用Cognito用户,并通过bucket策略为他们提供对bucket中文件夹的访问-例如bucket\u NAME/user\u data/eu-west-2:00000000-0000-0000-0000-000000000000 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Ac
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::BUCKET_NAME",
"Condition": {
"StringLike": {
"s3:prefix": [
"user_data/${cognito-identity.amazonaws.com:sub}/",
]
}
}
},
{
"Effect": "Allow",
"Principal": "*",
"Action": ["s3:GetObject", "s3:PutObject"],
"Resource": [
"arn:aws:s3:::BUCKET_NAME/user_data/${cognito-identity.amazonaws.com:sub}/*"
]
}
]
}
这对于使用javascript API的客户机来说非常有效。它们进行身份验证,我可以使用AWS.config.credentials.identityId访问S3
但是,如果我想从.NETWebAPI后端访问用户的bucket,我找不到任何方法来获取标识ID。所以我不知道哪个文件夹是用户的,这违背了创建用户文件夹的全部目的。例如,当用户注册时,我可能希望创建包含现有项目的文件夹
一种解决方法是让客户机发布标识ID,这样就可以根据User sub进行存储,但前提是假设-1;2.该ID是有效的
TLDR:如何使用AWSSDK.CognitoIdentity从Cognito用户名(sub)获取Cognito标识ID?
1一个重要的旁白——我花了太多时间才发现,${cognito identity.amazonaws.com:sub}不是用户sub。文档非常不清楚,所以我根本不知道${cognito identity.amazonaws.com:sub}会是什么样子。这可能会让你有一个好的开始:
Amazon.CognitoIdentity.CognitoAWSCredentials creds =
new Amazon.CognitoIdentity.CognitoAWSCredentials("pool id", Amazon.RegionEndpoint.USEast1, ...);
creds.GetIdentityId();
这里有一个线索:
在统一部分
nuget:package id=“AWSSDK.CognitoIdentity”version=“3.3.2.16”
希望能有帮助。。。他们的文档对特定用例没有多大帮助,所以我们必须团结一致 是的,只要我有用户的密码就行,这样我就可以作为他们进行身份验证,并将ID令牌传递给GetIdentityId。我曾希望我不必代理身份验证过程……我可以看到,一直获取密码的一些方法都会有问题——无会话、用户池和SSO。我想知道你是不是在用Lambda创建文件夹?