Двухфакторная аутентификация на Iphone? - PullRequest
0 голосов
/ 02 октября 2019

В моем серверном приложении nodeJS есть код 2FA, который использует модуль speakeasy, чтобы проверить, является ли переданный ключ действительным или нет. Я использую приложение Google Authenticator на стороне клиента. Я использую секретный ключ = "A0B0C0D0E0F0A1B1C1D1E1F2". Это хорошо работает на устройствах Android . Однако, когда я пытаюсь сделать то же самое на Iphone, я сталкиваюсь со следующими проблемами:

  1. Приложение Google Authenticator на Iphone не позволяет мне добавить секретный «A0B0C0D0E0F0A1B1C1D1E1F2». Кажется, у него есть некоторые собственные правила относительно секретных ключей.
  2. Даже когда я ввожу секретный ключ, который разрешает Iphone, код speakeasy.totp не может проверить и всегда возвращает FALSE.
  secretKey = "A0B0C0D0E0F0A1B1C1D1E1F2";
  var verified = speakeasy.totp.verify({
    secret: secretKey,
    encoding: 'base32',
    token: userToken
  }); 

if(!verified) {
         // verification failed
    } else {
         // verification ok
    }

Как исправить эту проблему, чтобы она работала как на устройствах Android, так и на устройствах Iphone?

Примечание. Приложение все еще находится в тестовой области. Секретные ключи в prod будут храниться в постоянном хранилище / дБ.

Спасибо.

1 Ответ

0 голосов
/ 18 октября 2019

Секрет, используемый в totp.verify, был в нижнем регистре. Когда я преобразовал это в верхний регистр, он начал работать нормально.

...