lua-resty-http-digest
HTTP Digest Access Authentication in Lua for OpenResty
$ opm get knight42/lua-resty-http-digest
Name
lua-resty-http-digest
Status
beta
Description
lua-resty-http-digest library implements "HTTP Digest Access Authentication"(specified by RFC7616) in Lua for OpenResty.
Synopsis
lua_package_path "/path/to/lua-resty-http-digest/lib/?.lua;;";
location = /protected {
access_by_lua_block {
local http_digest = require 'resty.http_digest'
local t, err = http_digest:new({
get_password = function(name) return 'root' end,
realm = 'example.com',
nonce_age = 60,
auth_timeout = 60,
max_replays = 20,
algorithm = http_digest.MD5,
redis = {
db = '0',
host = '127.0.0.1',
port = 6379,
timeout = 1000,
keepalive_idle_timeout = 20000,
keepalive_pool_size = 5,
},
})
if err then
ngx.status = 500
ngx.log(ngx.ERR, err)
ngx.exit(500)
end
local auth, err = t:authenticate()
if ngx.status == ngx.HTTP_UNAUTHORIZED then
-- send challenge
ngx.exit(ngx.status)
end
if err then
ngx.log(ngx.ERR, err)
ngx.exit(ngx.status)
end
ngx.say('Welcome ' .. auth.username)
}
}
Methods
new
syntax: t, err = class:new(opts)
Creates an authenticator object. Returns nil and a message string on error.
It accepts a opts table argument. The following options are supported:
get_password: a function that returns(password, error)for the given username.Required. The signature of the function is:
(username: string) -> (password: string, error)
realmOptional. Default:
ngx.var.http_host
nonce_age: TTL of nonce in secondsOptional. Default:
60
auth_timeout: Specify how many seconds challenges will remain valid after server sends them to clients.Optional. Default:
60
max_replays: The times that a nonce can be re-used.Optional. Default:
20
algorithmOptional. Default:
http_digest.MD5. Available:http_digest.MD5,http_digest.SHA256
redis.dbOptional. Default:
0
redis.hostOptional. Default:
127.0.0.1
redis.portOptional. Default:
6379
redis.timeoutOptional. Default:
1000(1 sec)
redis.keepalive_idle_timeoutOptional. Default:
nil. See also https://github.com/openresty/lua-resty-redis#set_keepalive
redis.keepalive_pool_sizeOptional. Default:
nilSee also https://github.com/openresty/lua-resty-redis#set_keepalive
authenticate
syntax: info, err = t:authenticate()
Validates the Authorization header and returns information extracted from Authorization header. In case of errors, it will set corresponding status code and returns an error message.
Installation
Limitations
realmcannot contain space char or quoteonly support
MD5andSHA256algorithms,*-sessalgorithms are not implementedonly
authqop is supported
Author
GitHub @knight42
License
lua-resty-http-digest is licensed under the MIT license.
Authors
Jian Zeng (knight42)
License
mit
Versions
-
HTTP Digest Access Authentication in Lua for OpenResty 2019-12-24 05:38:05