Проблема:
У меня есть два пользовательских пула в 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 («Не удалось заставить конечного пользователя войти в систему»)