iOS приложение: как получить доступ к объекту S3, сохраненному в папке cognito identity id другим пользователем - PullRequest
0 голосов
/ 09 января 2020

В моем приложении iOS я сделал AWS Аутентификацию пользователя Cognito. Прошедшие проверку пользователи могут загружать изображения в защищенную папку ie в защищенном / {cognito user_identitiy_id}. Прошедшие проверку пользователи могут получить доступ к объектам, сохраненным только в их папке user_identity_id. Как один пользователь может получить доступ к объектам от других. Документ S3 гласит: -

Publi c: доступно всем пользователям вашего приложения. Файлы хранятся в папке public / path в вашей корзине S3.

Защищено: Доступно для чтения всем пользователям, но доступно для записи только для создавшего пользователя. Файлы хранятся в защищенном / {user_identity_id} /, где user_identity_id соответствует уникальному идентификатору идентификации Amazon Cognito для этого пользователя.

Личный: доступен только для отдельного пользователя. Файлы хранятся в private / {user_identity_id} /, где user_identity_id соответствует уникальному идентификатору Amazon Cognito для этого пользователя.

Ответы [ 2 ]

1 голос
/ 09 января 2020

Если вы используете Amplify, то используете Protected. Владелец имеет права на запись, в то время как другие могут только читать файлы.

Просьба помочь убедиться, что:

  1. Ваша политика S3 Bucket похожа на то, что папка "Protected" ограничивает доступ пользователя: https://docs.amazonaws.cn/en_us/IAM/latest/UserGuide/reference_policies_examples_s3_cognito-bucket.html

  2. на iOS, предположим, что вы используете Amplify, пожалуйста, следуйте этому: https://aws-amplify.github.io/docs/ios/storage. Помните, что перед использованием API хранилища вы должны сначала пройти аутентификацию и обменяться данными с учетными данными.

0 голосов
/ 13 января 2020

Другой пользователь, который хочет прочитать файл, может указать пользователя, который его создал:

let options = StorageDownloadDataRequest.Options(accessLevel:.protected, targetIdentityId: "OtherUserId")
...