Enviando una solicitud http con autenticación básica

Lua:
Enviando una solicitud http con autenticación básica

Cómo Hacerlo:

Usaremos el módulo socket.http para realizar la solicitud y mime para codificar las credenciales.

-- Importamos los módulos necesarios
local http = require("socket.http")
local ltn12 = require("ltn12")
local mime = require("mime")

-- Credenciales 
local username = "tu_usuario"
local password = "tu_contraseña"

-- Codificamos las credenciales en Base64
local auth = "Basic " .. mime.b64(username .. ":" .. password)

-- Preparamos la cabecera de autenticación
local headers = {
    ["Authorization"] = auth
}

-- Configuramos los parámetros para la solicitud
local response_body = {}
local res, code, response_headers = http.request{
    url = "http://tuurl.com/api/datos",
    method = "GET",
    headers = headers,
    sink = ltn12.sink.table(response_body)
}

-- Verifica si la solicitud fue exitosa
if code == 200 then
    print(table.concat(response_body))
else
    print("Error: " .. (res or code))
end

El código anterior realiza una solicitud GET a una API, incluyendo las credenciales codificadas en Base64 en la cabecera de autorización.

Profundizando

La autenticación básica (Basic Auth) se ha utilizado desde los primeros días de la web. No es la más segura porque las credenciales son relativamente fáciles de descifrar. Hoy existen métodos más protegidos como OAuth. En Lua, la implementación es directa: codifica las credenciales, añade la cabecera, envía la solicitud. Lua no incluye nativamente soporte para HTTP o codificación Base64, por eso usamos los módulos externos socket.http y mime, respectivamente.

Ver También