Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 检索Cognito用户的IdentityId_.net_Amazon Web Services_Authentication_Amazon S3_Amazon Cognito - Fatal编程技术网

.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

首先,我阅读了类似的问题:

我们使用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": "*",
        "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创建文件夹?