2fa-utils 中文文档教程

发布于 3年前 浏览 32 项目主页 更新于 3年前

Two-Factor Authentication

npm Travis (.com) Codecov Snyk Vulnerabilities for npm package

使用RFC 4226,可以生成和验证基于HMAC的一次性密码(HOTP)和基于时间的一次性密码(TOTP) .

Features

  • Generate base-32 encoded secrets.
  • Generate HMAC-based one-time passwords (HOTP) at a specific length.
  • Generate time-based HOTPs at a specific amount of windows.
  • Verify generated tokens.

Usage

Generating Secret

对于每个帐户,必须生成一个秘密并在服务器和客户端之间共享。 这个秘密将用于创建和验证 HOTP。

const secret = twoFA.generateSecret();

Generating HOTP

HOTP 需要一个 base32 编码的秘密和一个带有时间步长的计数器。

// Generate base32 secret
const secret = twoFA.generateSecret();
// Create counter with 30 seconds interval 
const counter = Math.floor(Date.now() / 30000);

const hotp = twoFA.generateHOTP(secret, counter, 6)

Generating TOTP

生成 TOTP 允许您在特定时间窗口内获得 HOTP。

const secret = twoFA.generateSecret();

// Get the current time window's token
const currentTotp = twoFA.generateTOTP(secret, 0);

// Get the future time window's token (1 window ahead)
const futureTotp = twoFA.generateTOTP(secret, 1);

// Get the past time window's token (1 window behind)
const pastTotp = twoFA.generateTOTP(secret, -1);

Verifying HOTP

验证通过用户输入提供的令牌。

function verifyHOTP(inputToken) {
  const secret = twoFA.generateSecret();
  const counter = Math.floor(Date.now() / 30000);

  // Actual token generated by the server
  const actualToken = twoFA.generateHOTP(secret, counter)

  if (inputToken === actualToken) return true;
  return false
}

Verifying TOTP

验证通过具有时间容差的用户输入提供的令牌。

const secret = twoFA.generateSecret();

const inputToken = '111111';

/* This will return true if the input token 
  - is currently valid,
  - was previously valid in the last window,
  - will be valid in the next window.
*/
const isTokenValid = twoFA.verifyTOTP(inputToken, secret, 1);

Dependencies

Author

  • Boran Seckin

License

该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。

Two-Factor Authentication

npm Travis (.com) Codecov Snyk Vulnerabilities for npm package

Using the algorithm provided in RFC 4226, can generate and verify HMAC-based one-time password (HOTP) and time-based one-time password (TOTP).

Features

  • Generate base-32 encoded secrets.
  • Generate HMAC-based one-time passwords (HOTP) at a specific length.
  • Generate time-based HOTPs at a specific amount of windows.
  • Verify generated tokens.

Usage

Generating Secret

For each account, a secret must be generated and shared between the server and the client. This secret will be used to create and verify HOTPs.

const secret = twoFA.generateSecret();

Generating HOTP

HOTP requires a base32-encoded secret and a counter with time-step.

// Generate base32 secret
const secret = twoFA.generateSecret();
// Create counter with 30 seconds interval 
const counter = Math.floor(Date.now() / 30000);

const hotp = twoFA.generateHOTP(secret, counter, 6)

Generating TOTP

Generating TOTP allows you to get a HOTP in a specific time window.

const secret = twoFA.generateSecret();

// Get the current time window's token
const currentTotp = twoFA.generateTOTP(secret, 0);

// Get the future time window's token (1 window ahead)
const futureTotp = twoFA.generateTOTP(secret, 1);

// Get the past time window's token (1 window behind)
const pastTotp = twoFA.generateTOTP(secret, -1);

Verifying HOTP

Verify tokens supplied via user input.

function verifyHOTP(inputToken) {
  const secret = twoFA.generateSecret();
  const counter = Math.floor(Date.now() / 30000);

  // Actual token generated by the server
  const actualToken = twoFA.generateHOTP(secret, counter)

  if (inputToken === actualToken) return true;
  return false
}

Verifying TOTP

Verify tokens supploed via user input with a time tolerance.

const secret = twoFA.generateSecret();

const inputToken = '111111';

/* This will return true if the input token 
  - is currently valid,
  - was previously valid in the last window,
  - will be valid in the next window.
*/
const isTokenValid = twoFA.verifyTOTP(inputToken, secret, 1);

Dependencies

Author

  • Boran Seckin

License

This project is licensed under the MIT License - see the LICENSE file for details.

更多

友情链接

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文