7

故事:Cognito:聯合身份ID和用戶屬性

我有一個Cognito用戶羣與用戶。

此用戶池是聯合身份驗證池中的身份驗證提供程序。

我有一個S3桶,用戶通過策略限於上傳到私人路徑上的驗證作用如下:

阿爾恩:AWS:S3 ::: BUCKET_NAME/$ {cognito身份.amazonaws.com:sub}/*

用戶通過aws javascript sdk直接從網絡瀏覽器上傳。

現在這項工作很好,我的用戶僅限於他們上傳的地方。這些文件上傳他們結束了在桶的路徑看起來像這樣:

美國東1:0f26319c-1233-4c71-afb6-fac96a798ffb/random_file_name.txt

然後我有一個每當添加文件時從此S3存儲桶觸發的lambda。爲了澄清,用戶不會調用拉姆達

問題:

我想訪問從LAMDA用戶池的用戶的屬性。我認爲我可以使用cognito-identity子進行查找。但是,我似乎無法找到使用SDK API的方式來允許這樣做。

使用此API: http://boto3.readthedocs.io/en/latest/reference/services/cognito-identity.html#CognitoIdentity.Client.describe_identity 我能夠獲得登錄/用戶池,但不是與此標識ID關聯的用戶名。

如果我的用戶名,然後我可以使用API​​:http://boto3.readthedocs.io/en/latest/reference/services/cognito-idp.html?highlight=cognito#CognitoIdentityProvider.Client.admin_get_user

任何想法如何,我可以使用聯合身份ID來查找用戶的屬性?

+0

是用戶名可用於瀏覽器中的代碼? – talentedmrjones

+1

@talentedmrjones它是。但是,如果我使用用戶屬性來跟蹤用戶存儲配額。這意味着任何用戶都可以發送他想要的任何用戶名。由於用戶名通常是電子郵件,因此假裝成其他人相對容易。 – bleuf1shi

回答

1

什麼存儲文件
arn:aws:s3:::BUCKET_NAME/${cognito-idp.us-east-1.amazonaws.com:sub}

這將被解析到該文件夾​​的名字,如
f4cfd4a8-0e94-4287-8c5e-1b01538dd2a1

使用此sub的用戶從Cognito用戶羣可以list users with that sub,例如在cli:
aws cognito-idp list-users --user-pool-id=us-east-1_ndhjGJQYE --filter "sub = 'f4cfd4a8-0e94-4287-8c5e-example'"

相關問題