Envoi d'une requête HTTP avec authentification de base

Lua:
Envoi d'une requête HTTP avec authentification de base

Comment faire :

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

-- Encoder vos identifiants
local username = "votre_nom_d'utilisateur"
local password = "votre_mot_de_passe"
local auth = "Basic " .. mime.b64(username .. ":" .. password)

-- Préparer votre requête
local response_body = {}
local res, code = http.request {
  url = "http://exemple.com/chemin/vers/la/ressource",
  method = "GET",
  headers = {
    ["Authorization"] = auth
  },
  sink = ltn12.sink.table(response_body)
}

-- Afficher le résultat
if code == 200 then
  print(table.concat(response_body))
else
  print("Erreur: " .. (code or "pas de réponse"))
end

Sortie:

<Les données récupérées depuis le serveur>

Exploration approfondie

Historiquement, l’authentification HTTP de base a été introduite comme un moyen simple mais moins sécurisé pour contrôler l’accès aux ressources HTTP. Elle est simple à mettre en œuvre, mais à cause du faible niveau de sécurité, elle est souvent remplacée aujourd’hui par des méthodes plus sûres, comme OAuth.

En Lua, pour envoyer de telles requêtes, on utilise des bibliothèques comme socket.http et mime du module LuaSocket. Elles permettent de gérer la connexion réseau et l’encodage des identifiants respectivement. Notons que le mot de passe est simplement encodé en base64, ce qui n’est pas une forme de chiffrement résistante aux attaques.

Une alternative consiste à utiliser des bibliothèques HTTP plus avancées comme luasec qui supportent HTTPS, offrant ainsi une couche supplémentaire de sécurité grâce au chiffrement SSL/TLS.

Voir aussi