В моем серверном приложении nodeJS есть код 2FA, который использует модуль speakeasy, чтобы проверить, является ли переданный ключ действительным или нет. Я использую приложение Google Authenticator на стороне клиента. Я использую секретный ключ = "A0B0C0D0E0F0A1B1C1D1E1F2". Это хорошо работает на устройствах Android . Однако, когда я пытаюсь сделать то же самое на Iphone, я сталкиваюсь со следующими проблемами:
- Приложение Google Authenticator на Iphone не позволяет мне добавить секретный «A0B0C0D0E0F0A1B1C1D1E1F2». Кажется, у него есть некоторые собственные правила относительно секретных ключей.
- Даже когда я ввожу секретный ключ, который разрешает 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 будут храниться в постоянном хранилище / дБ.
Спасибо.