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
- Documentación de LuaSec - Para realizar conexiones seguras HTTPS.
- Manual de Lua 5.4 (versión actual) - Referencia del lenguaje.
- RFC 7617 ‘The ‘Basic’ HTTP Authentication Scheme’ - Descripción del método de autenticación básica.
- LuaRocks - Gestor de paquetes de Lua donde puedes encontrar
socket.http
ymime
.