C++:
HTTP-Anfragen mit Basisauthentifizierung senden
Vorgehensweise:
#include <iostream>
#include <string>
#include <curl/curl.h>
size_t callback(char* buf, size_t size, size_t nmemb, void* up) {
for (int c = 0; c < size*nmemb; c++) {
std::cout << buf[c];
}
return size * nmemb;
}
int main() {
CURL* curl = curl_easy_init();
if(curl) {
std::string userAndPassword = "user:password"; // Ersetzen Sie dies durch Ihre echten Anmeldeinformationen.
std::string authHeader = "Authorization: Basic " + userAndPassword;
struct curl_slist *headers = nullptr;
headers = curl_slist_append(headers, authHeader.c_str());
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/protected"); // URL der geschützten Ressource
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback);
CURLcode res = curl_easy_perform(curl);
if(res != CURLE_OK) {
std::cerr << "CURL error: " << curl_easy_strerror(res) << std::endl;
}
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
}
return 0;
}
Achtung: user:password
muss in Base64 kodiert werden. Verwenden Sie den Header, wie er ist, nur mit Ihren echten Basis-Authentifizierungsinformationen.
Output (hängt von der Ressource ab):
HTTP/1.1 200 OK
...
Hello, secured world!
Deep Dive
Die Basis-Authentifizierung ist ein seit langem bestehender Mechanismus und wird wegen ihrer Einfachheit oft verwendet. Die Anmeldeinformationen sind lediglich Base64-kodiert, jedoch nicht verschlüsselt, was sie anfällig für Man-in-the-Middle-Angriffe macht. Daher sollte sie zusammen mit HTTPS eingesetzt werden.
Ein alternatives Authentifizierungsschema könnte OAuth sein, das sicherer ist und mehr Flexibilität bei der Zugriffskontrolle bietet.
Die verwendete LIBCURL-Bibliothek in diesem Beispiel ist eine robuste, portierbare Bibliothek, die den Umgang mit HTTP-Anfragen einfach gestaltet. Sie kümmert sich um Networking-Aufgaben, sodass der Entwickler sich auf das Wesentliche konzentrieren kann.