auth-filters: use crypt() in simple-authentication
There's no use in giving a silly example to folks who will just copy it, so instead try to do something slightly better. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
parent
b73df8098f
commit
82856923bf
@ -23,17 +23,11 @@ local protected_repos = {
|
|||||||
qt = { jason = true, bob = true }
|
qt = { jason = true, bob = true }
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Please note that, in production, you'll want to replace this simple lookup
|
-- A list of users and hashes, generated with `mkpasswd -m sha-512 -R 300000`.
|
||||||
-- table with either a table of salted and hashed passwords (using something
|
|
||||||
-- smart like scrypt), or replace this table lookup with an external support,
|
|
||||||
-- such as consulting your system's pam / shadow system, or an external
|
|
||||||
-- database, or an external validating web service. For testing, or for
|
|
||||||
-- extremely low-security usage, you may be able, however, to get away with
|
|
||||||
-- compromising on hardcoding the passwords in cleartext, as we have done here.
|
|
||||||
local users = {
|
local users = {
|
||||||
jason = "secretpassword",
|
jason = "$6$rounds=300000$YYJct3n/o.ruYK$HhpSeuCuW1fJkpvMZOZzVizeLsBKcGA/aF2UPuV5v60JyH2MVSG6P511UMTj2F3H75.IT2HIlnvXzNb60FcZH1",
|
||||||
laurent = "s3cr3t",
|
laurent = "$6$rounds=300000$dP0KNHwYb3JKigT$pN/LG7rWxQ4HniFtx5wKyJXBJUKP7R01zTNZ0qSK/aivw8ywGAOdfYiIQFqFhZFtVGvr11/7an.nesvm8iJUi.",
|
||||||
bob = "ilikelua"
|
bob = "$6$rounds=300000$jCLCCt6LUpTz$PI1vvd1yaVYcCzqH8QAJFcJ60b6W/6sjcOsU7mAkNo7IE8FRGW1vkjF8I/T5jt/auv5ODLb1L4S2s.CAyZyUC"
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Set this to a path this script can write to for storing a persistent
|
-- Set this to a path this script can write to for storing a persistent
|
||||||
@ -48,7 +42,7 @@ local secret_filename = "/var/cache/cgit/auth-secret"
|
|||||||
|
|
||||||
-- Sets HTTP cookie headers based on post and sets up redirection.
|
-- Sets HTTP cookie headers based on post and sets up redirection.
|
||||||
function authenticate_post()
|
function authenticate_post()
|
||||||
local password = users[post["username"]]
|
local hash = users[post["username"]]
|
||||||
local redirect = validate_value("redirect", post["redirect"])
|
local redirect = validate_value("redirect", post["redirect"])
|
||||||
|
|
||||||
if redirect == nil then
|
if redirect == nil then
|
||||||
@ -58,8 +52,7 @@ function authenticate_post()
|
|||||||
|
|
||||||
redirect_to(redirect)
|
redirect_to(redirect)
|
||||||
|
|
||||||
-- Lua hashes strings, so these comparisons are time invariant.
|
if hash == nil or hash ~= unistd.crypt(post["password"], hash) then
|
||||||
if password == nil or password ~= post["password"] then
|
|
||||||
set_cookie("cgitauth", "")
|
set_cookie("cgitauth", "")
|
||||||
else
|
else
|
||||||
-- One week expiration time
|
-- One week expiration time
|
||||||
|
Loading…
Reference in New Issue
Block a user