AWS Вход для федеративного пользователя Cognito, не позволяющий войти в систему как другой пользователь после выхода - PullRequest
0 голосов
/ 11 июля 2020

Я могу выйти и войти в систему, но есть 1 конкретный сценарий, которого я не могу реализовать.

Сценарий: -

  • Пользователь входит в систему с использованием федеративного входа в социальную сеть ( Google), используя размещенный пользовательский интерфейс напрямую.
  • Теперь пользователь нажимает кнопку выхода, он направляет его на AWS URL выхода из системы Cognito
https://xxxxxxx.auth.us-east-2.amazoncognito.com/logout?
response_type=token&client_id=xxxxxxxxx&logout_uri=https://abc/logout.html

пользователь успешно и успешно выполняет выход из системы. перенаправляет пользователя на страницу выхода, как указано в URL.

  • Теперь, когда пользователь пытается снова войти в систему с другой учетной записью, он вынужден использовать только свой предыдущий вход в Google.

Я хочу иметь такую ​​функциональность, чтобы пользователь мог выйти из системы и снова войти в систему, если он захочет, тогда он может войти в систему с той же учетной записью или с другой, в зависимости от выбора.

Важный момент Следует отметить, что я не могу использовать AWS -Amplify или любую javascript структуру, только простой javascript.

Ответы [ 2 ]

0 голосов
/ 12 июля 2020

Что ж, у меня это работает, но я не думаю, что это проблема, а своего рода поведение, которое должен знать каждый разработчик, пытающийся интегрировать логин google в свое приложение. Вот несколько сценариев ios, которые я проверил, и их соответствующее поведение.

Мой AWS URL-адрес входа в Cognito

https://xxxxxxx.auth.us-east-2.amazoncognito.com/oauth2/authorize?
identity_provider=Google&redirect_uri=https://xxxxxx/login.html&response_type=TOKEN
&client_id=xxxxxxxxxxxxxxxxx&scope=phone%20email%20openid%20profile

Мой AWS Cognito URL выхода

https://xxxxxxxxx.auth.us-east-2.amazoncognito.com/logout?
client_id=xxxxxxxxxxxxxxxxxxxx
&logout_uri=https://xxxxxxxxxxxxx/logout.html

Используя указанный выше URL-адрес при выходе из системы, я не выхожу из браузера chrome.

Такое поведение является проблемой для многих людей.

Поэтому, когда в вашем chrome браузере есть только одна учетная запись, в это время AWS вход в Cognito google не будет перенаправлять на страницу, где вы можете выберите другого пользователя, потому что у вас есть только один пользователь, через которого он входит в систему косвенно.

Выяснилось, как мы можем отображать несколько входов: - Итак, если вы хотите, чтобы другой пользователь вошел в систему, тогда ему нужно сначала войти в браузер chrome, и когда он в это время щелкнет логин google с веб-сайта, он сможет выбрать пользователя, как в chrome, теперь у нас есть 2 пользователя, вошедших в Google, откуда он может выберите пользователя, которого хотите использовать для доступа.

Я не буду примите это как ответ, потому что это не то, как все хотят такого поведения, подождет несколько дней, если кто-то может предложить лучший способ . Я так думаю, сейчас нам нужно go с этим.

0 голосов
/ 12 июля 2020

Причина, по которой вы всегда вынуждены входить в систему с одним и тем же пользователем, похоже, заключается в том, что / logout? конечная точка выполняет только выход пользователя из системы Cognito, но Cognito не сообщает Google, что он должен выполнить выход пользователя из вашего устройства. Таким образом, каждый раз, когда вы снова входите в систему и запускается экран проверки подлинности Google, Google по-прежнему запоминает устройство и видит, что вы все еще вошли в систему. В результате URI перенаправления срабатывает без запроса на выбор новой учетной записи.

Я сталкиваюсь с теми же проблемами в проекте React Native, но еще не нашел никаких доказательств того, что Cognito предлагает конечную точку, чтобы заставить ее также выйти из поставщика удостоверений (например, Google).

PS: вот еще одно обсуждение stackoverflow с дополнительной информацией: AWS Cognito - Как принудительно выбрать учетную запись при входе в Google

В одном из ответов в этой ветке упоминается вызов конечной точки выхода Google напрямую как часть процесса выхода. Это определенно некрасиво, но, поскольку вы используете простой Javascript, этого может быть достаточно.

Если вы найдете более чистое решение, обязательно поделитесь им, так как мне было бы интересно услышать, что вы найдете:)

...