opex-2fa
предоставляет простую интеграцию двухфакторной аутентификации (2FA) в приложения на Node.js, используя стандарт TOTP (RFC 6238) и HOTP (RFC 4226). Это позволяет создавать коды, совместимые со стандартными приложениями аутентификаторами, такими как Authy, Google Authenticator и Microsoft Authenticator.
npm install opex-2fa
Генерирует секретный ключ, который используется для генерации одноразовых паролей в приложении аутентификаторе.
generate2faSecret({ name, account })
- (Object) — Объект настроек, который может содержать:
-
name
(String) — название вашего приложения. -
account
(String) — имя или идентификатор аккаунта пользователя.
-
- (Object) — Объект, содержащий:
-
secret
(String) — секретный ключ. -
uri
(String) — URI для импорта в аутентификатор. -
qr
(String) — URL адрес QR кода для сканирования.
-
import { generate2faSecret } from "opex-2fa";
const newSecret = generate2faSecret({ name: "MyApp", account: "user@example.com" });
console.log(newSecret);
{
secret: 'ABCDEFGHJKLMNOPQRSTUVWXYZ234567',
uri: 'otpauth://totp/MyApp:user%40example.com?secret=ABCDEFGHJKLMNOPQRSTUVWXYZ234567&issuer=MyApp',
qr: 'https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=otpauth://totp/MyApp:user%40example.com?secret=ABCDEFGHJKLMNOPQRSTUVWXYZ234567&issuer=MyApp'
}
Генерирует одноразовый пароль (OTP) на основе секретного ключа.
generate2faOTP(secret)
-
secret
(String) — Секретный ключ пользователя.
-
otp
(String) — Строка, содержащая сгенерированный шестизначный OTP.
import { generate2faOTP } from "opex-2fa";
const otp = generate2faOTP("ABCDEFGHJKLMNOPQRSTUVWXYZ234567");
console.log(otp);
'123456'
Проверяет, совпадает ли введенный пользователем OTP с сгенерированным на основе секретного ключа. OTP доступен 30 секунд не учитывая сдвиг параметра window
в verify2faOTP
.
verify2faOTP(token, otp, window)
-
secret
(String) — Секретный ключ, используемый для проверки OTP. Это должна быть та же строка, которая использовалась при генерации OTP. -
otp
(String) — Одноразовый пароль, введенный пользователем, который необходимо проверить. -
window
(Number) (необязательный) — Определяет допуск временного сдвига для верификации OTP в виде числа токенов до и после текущего момента. По умолчанию: 4.
- (Boolean):
-
true
— если OTP совпадает. -
false
— если не совпадает или время его действия истекло.
-
import { verify2faOTP } from "opex-2fa";
const isVerified = verify2faOTP("ABCDEFGHJKLMNOPQRSTUVWXYZ234567", "123456");
console.log(isVerified);
true