Как пройти аутентификацию в Amazon Cognito с помощью AWSMobileClient? - PullRequest
1 голос
/ 04 июня 2019

Проблема: У меня есть два пользовательских пула в Cognito. Давайте назовем их «Пул А» и «В». Я могу успешно аутентифицировать пользователя в «Пуле А».

Мне нужно аутентифицировать пользователя, созданного бэкендом, динамически в "Pool B" от клиента.

Документы, которые я прочитал: * Amazon Amplify * Amazon Cognito * Amazon SDK для iOS * AWSMobileClient

Моя настройка: * AWSMobileClient v2.9.8

Я пробовал следующее решение:

  • awsconfiguration.json содержит информацию о «пуле А»
  • Я вхожу в систему в «Пул А» и выполняю бизнес-логику (успех)
  • Я выхожу из системы на глобальном уровне и аннулирую токены. (Успех)
  • Я настраиваю конфигурацию для "Pool B" из кода, я не уверен, как указать несколько пользовательских пулов в awsconfiguration.json. Не уверен, что это выполнимо.
  • Я вхожу в систему пользователем, созданным серверной частью, присутствующей в «Пуле B». (выдает сообщение об ошибке «Невозможно войти в систему»)

AWSMobileClient.sharedInstance (). Зарегистрировались ( имя пользователя: "user_present_in_pool_a", пароль: "пароль" ) {результат, ошибка в

        debugPrint(result, error)

        // Async sign out

        AWSMobileClient.sharedInstance().signOut(
            options: .init(
                signOutGlobally: true,
                invalidateTokens: true
            ),
            completionHandler: { error in

            debugPrint(error)

            // setup configuration for "Pool B"
            let serviceConfig = AWSServiceConfiguration(
                region: .USWest2,
                credentialsProvider: nil
            )

            let poolConfig = AWSCognitoIdentityUserPoolConfiguration(
                clientId: "pool_b_client_id", clientSecret: nil, poolId: "pool_b_id"
            )

            // init pool client
            AWSCognitoIdentityUserPool.register(
                with: serviceConfig,
                userPoolConfiguration: poolConfig,
                forKey: "some_key"
            )

            AWSMobileClient.sharedInstance().signIn(
                username: "user_present_in_pool_b",
                password: "password"
            ) { result, error in
                debugPrint(result, error)
            }
        })
    }

AWSMobileClient.Error («Не удалось заставить конечного пользователя войти в систему»)

...