Сначала увидели:
и, безусловно, прекрасные примеры от Buggy @ Github по адресу: https://github.com/buggy/project-x-server/tree/master/shopify/src
Тем не менее, все потоки без пароля, которые я видел до сих пор, похоже, также используют пользовательскую аутентификацию, такую как капча.Я собираюсь использовать встроенный в AWS SMS MFA, который в других случаях отлично работал для меня.
Использование:
Что работает:
Вход по номеру телефона и паролю, с кодом подтверждения.То есть это:
const user = await Auth.signIn(this.state.phoneNumber, this.state.password)
...then...
const data = await Auth.confirmSignIn(this.state.user, this.state.confirmationCode, 'SMS_MFA');
Без пароля пароль для входа без какого-либо MFA с использованием лямбда-триггера предварительной проверки подлинности (очевидно, не является жизнеспособным решением):
event.response.issueTokens = true;
event.response.failAuthentication = false;
Проблема : Когда я пытаюсь войти в учетную запись пользователя, отправляя только имя пользователя, например:
const user = await Auth.signIn(this.state.phoneNumber)
Amplify выдает сообщение об ошибке (с ошибкой):
null failed with error Generate callenges lambda cannot be called..
То есть без лямбда-триггеров, установленных для пула пользователей.
Если я установлю триггер defineAuthChallenge, который включает в себя следующее:
event.response.issueTokens = true;
event.response.failAuthentication = false;
Это, конечно, простологинит меня без МФА.Но если для issueTokens
задано значение false, поток аутентификации завершается неудачно, и на следующей странице я получаю сообщение об ошибке по причине отсутствия идентификатора токена.
Если задать event.response.challengeName = 'SMS_MFA'
, ошибки исчезнут, но SMS не отправляется, и я не аутентифицируюсь.
Есть ли способ (а) на самом деле установить SMS MFA в качестве моей "особой задачи" таким образом, чтобы это работало?(б) еще лучше, вообще не использовать лямбда-триггеры и получать усиление и пул пользователей, чтобы обходиться без паролей?
В его нынешнем виде единственные обходные пути, которые я вижу:
- внедрить SMS MFA вручную (нет, спасибо)
- пароли с жестким кодом для пользователей на стороне клиента для регистрации и входа