Een HTTP-verzoek verzenden met basisauthenticatie

Arduino:
Een HTTP-verzoek verzenden met basisauthenticatie

Hoe:

Om dit op een Arduino te realiseren, moet je eerst de benodigde bibliotheken opnemen - typisch <ESP8266WiFi.h> voor ESP8266 of <WiFi.h> voor ESP32, en <Base64.h> voor het coderen van authenticatiegegevens. Hier is een minimalistische codefragment om je op weg te helpen:

#include <ESP8266WiFi.h>
#include <Base64.h>

const char* ssid = "jeSSID";
const char* wachtwoord = "jeWachtwoord";
const char* server = "jouw.server.com";
const char* authGebruiker = "gebruiker";
const char* authWachtwoord = "wachtwoord";

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, wachtwoord);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  
  String auth = "Basic " + base64::encode(String(authGebruiker) + ":" + String(authWachtwoord));

  WiFiClient client;
  if (client.connect(server, 80)) {
    client.println("GET /route HTTP/1.1");
    client.print("Host: ");
    client.println(server);
    client.println("Authorization: " + auth);
    client.println("Connection: close");
    client.println();
  }
}

void loop() {
  // Jouw reguliere code hier
}

Na het uitvoeren zal de Arduino verbinden met de opgegeven server met de inloggegevens en de beveiligde inhoud ophalen.

Diepere duik

HTTP Basisauthenticatie bestaat al sinds de vroege dagen van het web, gedefinieerd in 1996 door RFC 2617. Het is eenvoudig: codeer gebruikersnaam en wachtwoord in base64 en plaats het op een HTTP-header. Het is niet de meest veilige methode (omdat base64 gemakkelijk omkeerbaar is), maar het is eenvoudig voor laag-risicosituaties of interne tools.

Er zijn alternatieven, zoals Digest Access Authentication of OAuth, die veiliger zijn, maar ze zijn ook zwaarder qua bronnen - iets om te overwegen op een kleine Arduino.

Voor implementatie, houd er rekening mee dat base64-codering de grootte van de inloggegevens met ongeveer 33% verhoogt en het geheugen van Arduino is beperkt. Zorg er ook voor dat je server SSL/TLS (HTTPS) gebruikt als je inloggegevens over het internet verzendt om blootstelling te voorkomen.

Zie ook