lua-resty-otp - Lua OTP lib for OpenResty
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.
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
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
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
Please report bugs or submit patches by
- Creating a ticket on the GitHub Issue Tracker.