Name
lua-resty-otp - Lua OTP lib for OpenResty
Table of Contents
Status
This library is already usable though still highly experimental.
The Lua API is still in flux and may change in the near future without notice.
Usage
Calculate OTP token
local lib_otp = require ("resty.otp")
local TOTP = lib_otp.totp_init("JBSWY3DPEHPK3PXP")
-- UTC format of date `20200101 00:00:00` -> 946656000
-- use `ngx.time()` instead of `946656000` in prod env
ngx.say("TOTP_Token -> ", TOTP:calc_token(946656000))
Output
458138
Generate QR Code
local lib_otp = require ("resty.otp")
local TOTP = lib_otp.totp_init("JBSWY3DPEHPK3PXP")
local url = TOTP:get_qr_url('OpenResty-TOTP', 'hello@example.com')
local html = [[
<img src='%s' />
]]
html = string.format(html, url)
ngx.header['Content-Type'] = 'text/html'
ngx.say(html)
Output
Scan the QR Code with Google Authenticator
Verify OTP
local lib_otp = require ("resty.otp")
local TOTP = lib_otp.totp_init("JBSWY3DPEHPK3PXP")
local token = ngx.var.arg_otp
ngx.say("Verify Token : ", TOTP:verify_token(token))
Use OTP from Google Authenticator
curl localhost/check?otp=734923
Output
Verify Token : true
Bugs and Patches
Please report bugs or submit patches by
- Creating a ticket on the GitHub Issue Tracker.