AWS Cognito / Получение информации о пользователе из подпрограммы - PullRequest
0 голосов
/ 02 июня 2019

У меня есть работающее приложение для iOS, использующее AWS Cognito AWSMobileClient, где пользователи могут входить и выходить из системы с помощью AWSAuthUI.

Я хочу сделать следующее: иметь саба от другого пользователя (например, 7y873ff7 -..... u9h4k) Я хотел бы получить информацию от этого другого пользователя.

После поиска в сети мне кажется, что мне нужно использовать что-то под названием ListUsers, но я не уверен на 100%. Может кто-нибудь подтвердить это и дать мне несколько советов о том, как мне нужно сделать, чтобы сделать то, что я хочу? Зная, что я работаю в Swift.

...... Позднее обновление поста .......

Следующие примеры, которые я нашел в сети; вот код, который я собрал в качестве пробной версии.

let getUsersRequest = AWSCognitoIdentityProviderListUsersRequest()

getUsersRequest?.attributesToGet = ["email"]
getUsersRequest?.userPoolId = "MY-POOL-ID"
getUsersRequest?.filter = "sub = \"SOME-USER-SUB\""

AWSCognitoIdentityProvider(forKey: "MY-POOL-ID").listUsers(getUsersRequest!,completionHandler: {
    (response, error) in
    print("OK, Here we are!")
})

Но я никогда не вижу сообщения: ОК, вот и мы!

Так что я, должно быть, делаю что-то не так. Конечно, MY-POOL-ID и SOME-USER-SUB - это реальные данные, которые я получаю с консоли AWS.

1 Ответ

1 голос
/ 02 июня 2019

Вы бы действительно использовали API ListUsers .

Здесь - документация для AWS iOS SDK. Один из фильтров, которые вы можете применить, относится к "sub".

У пользователя, вызывающего ListUsers, должна быть назначена роль, которая предоставит ему доступ к этому API. Посмотрите это сообщение в блоге AWS для примера в JS.

Однако, вы не можете позволить всем перечислить всех пользователей в пуле , это было бы огромной дырой в безопасности. Разрешения на перечисление всех пользователей должны быть зарезервированы для администраторов приложений и только при необходимости. Вместо этого вы можете настроить лямбда-функцию в AWS, вызываемую через API-шлюз. Функция будет принимать sdb в качестве входных данных и будет возвращать адрес электронной почты. Роль, прикрепленная к этой функции, даст ему доступ к вызову ListUsers для вашего пула. Это ограничит объем информации, которую ваши пользователи могут получить о других, но ваша Lambda должна по-прежнему выполнять проверки, чтобы убедиться, что она не используется. Например, если пользователь X хочет получить адрес электронной почты пользователя Y, пользователь Y должен заранее это одобрить.

Я не знаю ваш вариант использования, но в целом, разрешить кому-либо получать информацию о любом пользователе вашего приложения следует делать с осторожностью. Любое взаимодействие между пользователями должно быть прозрачным для них и согласовано. Помните, что пользователи могут войти в Cognito из-за пределов вашего приложения, если они могут найти идентификатор приложения и секретный токен. Предоставляя пользователю доступ к чему-либо, подумайте о том, как им можно злоупотреблять. Возможно, вы поймете, что вам следует переосмыслить подход к проблеме.

...