Lua:
Å sende en HTTP-forespørsel med grunnleggende autentisering
Hvordan:
local http = require("socket.http")
local ltn12 = require("ltn12")
-- Opprett en base64-enkodet streng for autentisering
local function basic_auth(user, password)
return "Basic " .. (user .. ":" .. password):gsub("\n", ""):gsub("\r", "")
end
-- Sett opp HTTP-forespørselen med grunnleggende autentisering
local user, password = "brukernavn", "passord"
local response_body = {}
http.request{
url = "http://eksempelside.no/data",
method = "GET",
headers = {
["Authorization"] = basic_auth(user, password)
},
sink = ltn12.sink.table(response_body)
}
-- Skriver ut responsen fra serveren
print(table.concat(response_body))
Eksempelutdata:
{"status":"suksess","melding":"Du er autentisert!"}
Dypdykk
Før SSL/TLS ble utbredt, var grunnleggende autentisering over HTTP vanlig for å beskytte ressurser. Til tross for svakhetene fortsatt brukt, spesielt der enkelhet er prioritert.
Digest-autentisering er et alternativ som er litt sikrere, da det ikke sender passord i klartekst. Moderne alternativer inkluderer OAuth og API-nøkler, som både gir mer robust sikkerhet og fleksibilitet.
Grunnleggende autentisering fungerer ved å inkludere en Authorization
header i HTTP-forespørselen. Verdien er ordet “Basic” fulgt av en base64-enkodet streng av brukernavn og passord. Lua krever et eksternt bibliotek, som socket.http
i vårt eksempel, for å håndtere HTTP-forespørsler.
Se Også
- LuaSec for HTTPS-støtte: https://github.com/brunoos/luasec/wiki
- HTTP-biblioteker for Lua: http://w3.impa.br/~diego/software/luasocket/http.html
- Lua Socket dokumentasjon: http://w3.impa.br/~diego/software/luasocket/
- Base64-koding i Lua: https://lua-users.org/wiki/BaseSixtyFour