2.0.6 • Published 10 months ago

@sergiomorenoalbert/fastify-totp v2.0.6

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

@sergiomorenoalbert/fastify-totp

A plugin to handle TOTP (e.g. for 2FA), forked to handle typings and updated dependencies

Node.js CI

Fastify version@sergiomorenoalbert/fastify-totp version
v5^2.x.x
v4^1.x.x

Install

npm i --save @sergiomorenoalbert/fastify-totp
yarn add @sergiomorenoalbert/fastify-totp
pnpm i --save @sergiomorenoalbert/fastify-totp

Usage

fastify.register(require('@sergiomorenoalbert/fastify-totp'))

// ...

secret = fastify.totp.generateSecret()

// You should now store secret.ascii in order to verify the TOTP.

const token = req.body.token

isVerified = fastify.totp.verify({ secret: secret.ascii, token })

The plugin includes also a facility to generate a QRCode that can be used to quickly configure third-party authenticators (e.g. Google Authenticator)

const qrcode = await fastify.totp.generateQRCode({ secret: secret.ascii })

Methods

NameDescription
generateSecret (length)Generate a new secret with the provided length (or use default one otherwise)
generateToken (options)Generate a TOTP token based on given options.
generateAuthURL (options)Generate an *auth URL** that can be used to configure a third-party authenticator.
generateQRCode (options) [async]Genereate a data-URI of a QRCode to share the auth URL.
verify (options)Verify a TOTP token with the original secret.

Request

NameDescription
request.totpVerify (options)See verify.

Options

NameDescription
secretLengthThe length of the generated secret. Default: 20
totpLabelThe label to show in third-party authenticators. Usually the app name. Default: "Fastify"
totpWindowThe allowable previous or future "time-windows" to check against of. Default: 1
totpAlgThe algorithm to use for hash generation. Default: "sha512"
totpStepTime step in seconds. Default: 30

NOTE: for more details, please take a look at Speakeasy docs.

Test

pnpm install
pnpm test

Acknowledgements

This project is kindly forked by:

Beliven

License

Licensed under MIT

2.0.3

10 months ago

2.0.2

10 months ago

2.0.5

10 months ago

2.0.4

10 months ago

2.0.6

10 months ago

2.0.1

10 months ago

2.0.0

10 months ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago