Продолжайте настраивать поток аутентификации после ответа на вызов NEW_PASSWORD_REQUIRED в AWS Cognito. - PullRequest
0 голосов
/ 23 января 2019

Новый пользователь создается администратором. Они должны сбросить свой первоначальный пароль при первом входе в систему. У нас есть клиент приложения Cognito, настроенный для разрешения только пользовательского потока аутентификации (CUSTOM_AUTH_FLOW_ONLY). Но когда пользователь сбрасывает свой пароль, поток аутентификации заканчивается, и он сразу же получает токен id, access и refresh, ни одна из пользовательских задач не выдается.

  • Как я могу управлять потоком, чтобы продолжить свой пользовательский поток вызовов вместо выдачи токенов?
  • Это также будет работать, если токены не будут отправлены в ответе после того, как они сбросят свой первоначальный пароль, так что пользователь должен будет снова войти в систему.

Новый пользователь в настоящее время проходит через этот поток:

  1. В данный момент для нового пользователя мы отправляем InitiateAuthRequest с именем пользователя и SRP_A, AuthFlow установлен на CUSTOM_AUTH, как при обычном входе в систему.
  2. Удар по нашей DefineAuthChallengeLambda вызывает вызов PASSWORD_VERIFIER.
  3. Клиент отвечает на запрос auth с утверждениями srp, именем пользователя и отметкой времени.
  4. Cognito проверяет ответ и видит, что пользователь должен сменить свой пароль. Наши лямбда-триггеры пропущены, и Cognito возвращает вызов NEW_PASSWORD_REQUIRED.
  5. Клиент отвечает на запрос аутентификации новым паролем, Cognito принимает пароль и выдает токены, а это не то, что нам нужно.

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

1 Ответ

0 голосов
/ 24 апреля 2019

Итак, я связался со службой поддержки AWS и получил следующий ответ:

Как я уже говорил, мы взаимодействуем с командой, и похоже, что вы определили проблему с использованием Custom_Auth в качествеа также проблема с использованием вызовов Custom_Auth и Password_Verifier / New_Password_Required.Похоже, что изменение Custom_auth на или из SRP_A и использование запроса «Требуется новый пароль» в данный момент не работает.Нам удалось полностью воспроизвести это с командой Cognito Service, и они подтвердили, что это немного сломано, и у нас нет поддержки этих проблем с пользовательской аутентификацией.Однако они согласились, что мы должны поддержать их на базе, и мы определили это как запрос функции с командой, и они поместили его в список приоритетов.К сожалению, я не могу дать точные временные рамки для полной реализации.

TL; DR: Пользовательский поток аутентификации с проверкой пароля в настоящее время не поддерживается полностью.Проблемы с сбросом пароля нарушают поток.

Для нас мы используем обходной путь: в лямбда-триггере PreTokenGeneration мы проверяем, происходит ли текущий поток аутентификации из события сброса пароля.Если это так, мы просто выдаем исключение, и токены не выдаются.Сообщение об исключении возвращается клиенту, поэтому, проверив содержимое сообщения об исключении, вы можете увидеть, какая именно произошла ошибка.Если вы видите, что токены не были сгенерированы из-за сброса пароля, просто скажите пользователю: «Пароль успешно сброшен» и снова перенаправьте его на страницу входа.Оттуда они могут войти в систему, как обычно, проходя через весь пользовательский поток аутентификации.

К сожалению, обратная связь не может быть предоставлена, когда функция доступна.Очевидно, что большинство новых функций объявлено здесь , поэтому я буду следить за этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...