1.0.5 • Published 1 year ago

@sergiomorenoalbert/fastify-totp v1.0.5

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

@sergiomorenoalbert/fastify-totp

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

Node.js CI

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

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago