-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhttpserver-basicauth.lua
41 lines (33 loc) · 1.22 KB
/
httpserver-basicauth.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
-- httpserver-basicauth.lua
-- Part of nodemcu-httpserver, authenticates a user using http basic auth.
-- Author: Sam Dieck
basicAuth = {}
-- Parse basic auth http header.
-- Returns the username if header contains valid credentials,
-- nil otherwise.
function basicAuth.authenticate(header, uname, passwd)
local conf = dofile("httpserver-conf.lc")
if (not not uname) then
conf.auth.user = uname
end
if (not not passwd) then
conf.auth.password = passwd
end
local credentials_enc = header:match("Authorization: Basic ([A-Za-z0-9+/=]+)")
if not credentials_enc then
return nil
end
local credentials = dofile("httpserver-b64decode.lc")(credentials_enc)
local user, pwd = credentials:match("^(.*):(.*)$")
if user ~= conf.auth.user or pwd ~= conf.auth.password then
-- print("httpserver-basicauth: User \"" .. user .. "\": Access denied.")
return nil
end
-- print("httpserver-basicauth: User \"" .. user .. "\": Authenticated.")
return user
end
function basicAuth.authErrorHeader()
local conf = dofile("httpserver-conf.lc")
return "WWW-Authenticate: Basic realm=\"" .. conf.auth.realm .. "\""
end
return basicAuth