Пул пользователей AWS Cognito Социальные провайдеры для авторизации/входа

#amazon-web-services #authentication #oauth-2.0 #amazon-cognito #federated-identity

Вопрос:

Привет, ребята, у меня проблема с авторизацией/входом пользователя:

  • Проект находится в react-native
  • Серверная часть находится на AWS, поэтому мы используем пул пользователей Cognito пулы удостоверений.
  • Наше приложение должно аутентифицировать пользователей только через Google или Apple -> то есть без локального имени пользователя/пароля AWS.
  • После аутентификации пользователя я хочу получить его/ее идентификатор токена, чтобы получить доступ к нашему API шлюза, защищенному авторизатором, ожидающим этот идентификатор.

Что я сделал:

  1. Создал и настроил консоль разработчиков apple/google и получил идентификатор приложения Google и идентификатор команды apple, ключ и идентификатор.
  2. Создал пул пользователей Cognito пул удостоверений и добавил идентификатор с первого шага

Теперь я хочу, чтобы это сработало на FE. Я хочу иметь пользовательские кнопки, которые будут иметь функции нажатия, вызывающие процесс входа в систему. Также я хотел бы пропустить сгенерированный пользовательский интерфейс Cognito для входа в систему и перейти непосредственно к данному поставщику (я думаю, через Auth.federatedSignIn({customProvider: "provider"} ). Можно ли это встроить в приложение? Есть ли где-нибудь в GIT пример? Кто-нибудь может подробнее рассказать об этом, пожалуйста? Мне нужен OAuth-поток с функциями AWS за вычетом пользовательского интерфейса, созданного AWS…

Я нигде не мог найти точного ответа. Если будут какие-то неясные детали, я расскажу подробнее. Заранее благодарю!

Ответ №1:

При переходе к конечной точке авторизации вы можете передать дополнительный параметр в строке запроса identity_provider , как описано здесь.

Это мгновенно перенаправляет пользователя на страницу входа и согласия ВПЛ без отображения размещенного пользовательского интерфейса.

Комментарии:

1. Спасибо, но почему-то я попробовал это, и у меня ничего не вышло. К счастью, я нашел другой способ…

2. Кроме того, у меня есть к вам вопрос. Я хочу аутентифицировать пользователей с помощью входа в систему Apple (SignInWithApple). Я могу это сделать, но мне нужна его/ее электронная почта, а это не работает. Я могу либо заставить область пула пользователей иметь обязательную электронную почту, а затем аутентификация не работает, либо область как нет и не получит электронное письмо (от JWT). Google работает нормально. Есть какие-нибудь предложения?

Ответ №2:

Я нашел способ обойти размещенный и сгенерированный пользовательский интерфейс Cognito. Просто проверьте элемент (кнопка входа в систему) и скопируйте ссылку. Работает как заклинание!