Как изменить личность пользователя, обращающегося к DynamoDB в iOS SDK / Swift

У меня есть приложение (Swift), которое ведет себя так:

  • Изначально пользователю приложения не нужно входить в систему. Этот анонимный пользователь может выполнять определенные операции только для чтения на DynamoDB (я понимаю, что это не очень хороший дизайн, но это то, что есть, я не могу изменить эту часть прямо сейчас)
  • Но когда пользователю требуются дополнительные привилегии, он должен войти в систему, используя учетную запись пула Cognito.
  • С этого момента DynamoDB должен использовать учетные данные пользователя Cognito, а не анонимного пользователя.

Проблема в том, что, как только соединение с DynamoDB было установлено с анонимным пользователем, я не могу изменить его на что-либо другое.

DynamoDB доступен следующим образом:

let dynamoDbObjectMapper = AWSDynamoDBObjectMapper.default()
let queryExpression = AWSDynamoDBQueryExpression()

queryExpression.keyConditionExpression = //etc;
// other conditions

dynamoDbObjectMapper.query(self, expression: queryExpression).continueWith(//etc

Пользователь вошел в систему с помощью контроллера входа, очень похожего на SignInViewController.swift в aws-sdk-ios-samples

Конфигурация пула также очень похожа на в AppDelegate.swift в aws-sdk-ios-samples

При доступе к таблицам БД, требующим аутентификации, я получаю сообщение об ошибке (как оно отображается в журнале трассировки AWS):

"__type": "com.amazon.coral.service # AccessDeniedException", "Message": "Пользователь: ...:accept-role/...UnAuthentic-.../CognitoIdentityCredentials не авторизован для выполнения: динамодат: Запрос на ресурсе:...

(Как видите, он все еще использует пользователя UnAuthentic.)

Итак, как мне изменить личность пользователя, который обращается к DynamoDB после входа в систему? Это вообще возможно?

0 ответов

Другие вопросы по тегам