Een HTTP-verzoek verzenden met basisauthenticatie

C++:
Een HTTP-verzoek verzenden met basisauthenticatie

Hoe:

Hier is een basisvoorbeeld met de CURL-bibliotheek in C++. Zorg ervoor dat je libcurl hebt geïnstalleerd voordat je begint.

#include <iostream>
#include <curl/curl.h>

// Eenvoudige callback-functie om gegevens te verwerken die door curl ontvangen zijn
static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp) {
    ((std::string*)userp)->append((char*)contents, size * nmemb);
    return size * nmemb;
}

int main() {
    CURL *curl;
    CURLcode res;
    std::string readBuffer;

    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "http://jouwapi.com/data");
        curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
        curl_easy_setopt(curl, CURLOPT_USERNAME, "gebruiker");
        curl_easy_setopt(curl, CURLOPT_PASSWORD, "wachtwoord");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
        
        // Voer het verzoek uit en controleer op fouten
        res = curl_easy_perform(curl);
        if(res != CURLE_OK) {
            fprintf(stderr, "curl_easy_perform() is mislukt: %s\n", curl_easy_strerror(res));
        } else {
            std::cout << readBuffer << std::endl;
        }
        
        // Opruimen
        curl_easy_cleanup(curl);
    }
    return 0;
}

Je zult een reactie van de server zien die naar de console wordt afgedrukt, ervan uitgaande dat er geen fouten zijn opgetreden.

Diepgaand

Basisauthenticatie is ouderwets en gaat terug tot de vroege dagen van HTTP. Tegenwoordig heeft de industrie een voorkeur voor veiligere methoden zoals OAuth en tokens. Ondanks dit blijft basisauthenticatie in gebruik, vaak voor interne of eenvoudige systemen waar zware beveiligingslagen overbodige overkill zijn.

Onder de motorkap worden je gebruikersnaam en wachtwoord base64-gecodeerd en in de HTTP-header gestopt. Het is eenvoudig maar onveilig als het niet over HTTPS gaat, omdat base64 gemakkelijk omkeerbaar is - wat HTTPS een must maakt.

Als libcurl niet naar jouw smaak is, overweeg dan alternatieven zoals de cpp-httplib-bibliotheek, of je kunt met Boost.Beast gaan voor een meer hands-on benadering.

Zie Ook