Meteor только что выпустил новый пакет, который упрощает вашу жизнь, когда вам нужно предоставить систему 2FA для ваших пользователей в вашем приложении Meteor.

Пакет называется accounts-2fa, и сейчас он интегрирован с accounts-password и accounts-passwordless.

С помощью этого пакета вы можете сгенерировать QR-код, который ваши пользователи смогут сканировать в любом приложении для аутентификации, таком как 1Password или Google Authenticator, и использовать коды, сгенерированные этими приложениями, для аутентификации в вашем приложении.

В этом посте я покажу вам, как вы можете использовать этот пакет.

Первым шагом является добавление пакета в ваш проект. Для этого выполните следующую команду:

$> meteor add accounts-2fa

Вам также необходимо использовать accounts-password или accounts-passwordless в качестве одного из методов входа в систему.

Активация 2FA

Теперь, когда вы добавили пакет в свой проект, вы можете сгенерировать QR-код, чтобы пользователь мог его отсканировать. Для этого вы вызываете функцию Accounts.generate2faActivationQrCode(), указав имя вашего приложения и обратный вызов, чтобы вы могли получить QR-код.

Ниже вы можете увидеть пример того, как вы могли бы вызвать эту функцию:

На данный момент 2FA еще не будет активирован. Теперь, когда у пользователя есть доступ к кодам, сгенерированным его приложением-аутентификатором, вы можете вызвать функцию Accounts.enableUser2fa с кодом, который предоставит пользователь.

Вы также можете проверить, включен ли у пользователя 2FA (на случай, если вы хотите показать эту информацию где-то в своем приложении), вызвав функцию Accounts.has2faEnabled.

Чтобы отключить 2FA, вам нужно вызвать функцию Accounts.disabledUser2fa.

Войти с помощью 2FA

Как я уже говорил, вам нужно использовать accounts-password или accounts-passwordless в качестве одного из методов входа в систему. При использовании accounts-password для входа необходимо вызвать функцию Meteor.loginWithPassoword, для accounts-passwordless нужно Meteor.passwordlessLoginWithToken.

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

Вот пример использования accounts-password:

Теперь вы можете вызывать функцию Meteor.loginWithPasswordAnd2faCode при работе с accounts-passwordили вызывать функцию Meteor.passwordLoginWithTokenAnd2faCode при работе с accounts-passwordless.

Заключение

Теперь так просто интегрировать 2FA в ваше приложение. Вы можете проверить официальный документ здесь для более подробной информации.

Вы также можете проверить эти методы в пользователе здесь.