HTTP-pyynnön lähettäminen perusautentikoinnilla

Lua:
HTTP-pyynnön lähettäminen perusautentikoinnilla

Näin teet:

http = require("socket.http")
ltn12 = require("ltn12")

local username = "kayttaja"
local password = "salasana"
local auth = "Basic " .. (username .. ":" .. password):gsub("\n", ""):gsub("\r\n", ""):encode("base64")

local response = {}
local result, statuscode, response_headers = http.request{
  url = "http://esimerkki.fi/api/data",
  method = "GET",
  headers = {
    ["Authorization"] = auth
  },
  sink = ltn12.sink.table(response)
}

if statuscode == 200 then
  print(table.concat(response))
else
  print("Virhe: " .. tostring(statuscode))
end

Näyte tulostus:

{"vastaus":"Tämä on API-vastauksen sisältö."}

Syväsukellus

Perusautentikointi on yksi vanhimmista keinoista suojata HTTP-verkkopalveluja. Se on yksinkertainen, mutta ei kovin turvallinen – tieto välittyy tekstimuodossa, mikä tekee siitä haavoittuvan. Parempia vaihtoehtoja ovat OAuth ja API-avaimet, joiden käyttö on lisääntynyt viime aikoina. Tietoturvan lisäämiseksi HTTPS:n käyttö on ehdoton, erityisesti, kun lähetetään tunnistetietoja. Lua:n “socket.http”-kirjasto ei automaattisesti tue perusautentikointia, joten yllä käytetään manuaalista lähestymistapaa, jossa “Authorization”-header luodaan itse.

Katso myös