Mercurial > prosody-modules
comparison mod_rest/mod_rest.lua @ 5934:667ce80937fa
mod_rest: Fix authentication
The :contains check failed because case normalization was applied after
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Mon, 15 Jul 2024 16:24:20 +0200 |
| parents | 2739d3db591f |
| children | eef6cb08f9e7 |
comparison
equal
deleted
inserted
replaced
| 5933:2739d3db591f | 5934:667ce80937fa |
|---|---|
| 51 size = { code = 413; type = "modify"; condition = "resource-constraint", text = "Payload too large" }; | 51 size = { code = 413; type = "modify"; condition = "resource-constraint", text = "Payload too large" }; |
| 52 }); | 52 }); |
| 53 | 53 |
| 54 local function check_credentials(request) -- > session | boolean, error | 54 local function check_credentials(request) -- > session | boolean, error |
| 55 local auth_type, auth_data = string.match(request.headers.authorization, "^(%S+)%s(.+)$"); | 55 local auth_type, auth_data = string.match(request.headers.authorization, "^(%S+)%s(.+)$"); |
| 56 auth_type = auth_type and auth_type:lower(); | |
| 56 if not (auth_type and auth_data) or not auth_mechanisms:contains(auth_type) then | 57 if not (auth_type and auth_data) or not auth_mechanisms:contains(auth_type) then |
| 57 return nil, post_errors.new("noauthz", { request = request }); | 58 return nil, post_errors.new("noauthz", { request = request }); |
| 58 end | 59 end |
| 59 auth_type = auth_type:lower(); | |
| 60 | 60 |
| 61 if auth_type == "basic" then | 61 if auth_type == "basic" then |
| 62 local creds = base64.decode(auth_data); | 62 local creds = base64.decode(auth_data); |
| 63 if not creds then | 63 if not creds then |
| 64 return nil, post_errors.new("malformauthz", { request = request }); | 64 return nil, post_errors.new("malformauthz", { request = request }); |
