Autorisierung und Authentifizierung in C++: Bibliotheken und praktische Beispiele

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in Authentifizierung und Autorisierung in C++



Authentifizierung (Überprüfung der Benutzeridentität) und Autorisierung (Überprüfung der Zugriffsrechte) sind Schlüsselkomponenten der Sicherheit jeder modernen Anwendung. In C++ werden diese Aufgaben mit Hilfe spezialisierter Bibliotheken gelöst, die die Unterstützung von JWT-Tokens, OAuth 2.0, Passwort-Hashing und Session-Verwaltung ermöglichen. In diesem Artikel analysieren wir die wichtigsten Werkzeuge, ihre Installation und Anwendungsbeispiele.



Wichtige Bibliotheken für die Authentifizierung in C++



1. JWT-CPP — Arbeiten mit JSON Web Tokens



JWT-CPP ist eine leichte Bibliothek zum Erstellen und Verifizieren von JWT-Tokens. Unterstützt die Algorithmen HMAC, RSA und ECDSA. Ideal für REST-APIs und Microservices.



Installation:

git clone https://github.com/Thalhammer/jwt-cppcd jwt-cppmkdir build && cd buildcmake ..make && make install


Beispiel zum Erstellen und Überprüfen eines Tokens:

#include <jwt-cpp/jwt.h>#include <iostream>

int main() { // Token mit Payload erstellen auto token = jwt::create() .set_issuer("auth.example.com") .set_type("JWS") .set_payload_claim("user_id", jwt::claim(std::string("12345"))) .sign(jwt::algorithm::hs256{"secret_key"});

std::cout << "Token: " << token << std::endl;

// Token verifizieren auto decoded = jwt::decode(token); auto verifier = jwt::verify() .allow_algorithm(jwt::algorithm::hs256{"secret_key"}) .with_issuer("auth.example.com");

try { verifier.verify(decoded); std::cout << "Token valid. User ID: " << decoded.get_payload_claim("user_id").as_string() << std::endl; } catch (const std::exception& e) { std::cerr << "Invalid token: " << e.what() << std::endl; } return 0;}


2. bcrypt-cpp — Passwort-Hashing



Die Bibliothek bcrypt-cpp bietet sicheres Passwort-Hashing mit dem Blowfish-Algorithmus. Beinhaltet automatische Salt-Generierung und Schutz vor Brute-Force-Angriffen.



Anwendungsbeispiel:

#include <bcrypt/BCrypt.hpp>#include <iostream>

int main() { std::string password = "SuperSecret123!";

// Passwort hashen std::string hash = BCrypt::generateHash(password); std::cout << "Hash: " << hash << std::endl;

// Passwort überprüfen if (BCrypt::validatePassword(password, hash)) { std::cout << "Password correct!" << std::endl; } else { std::cout << "Invalid password." << std::endl; } return 0;}


3. OAuth2 Client — Integration mit Anbietern



Für die Implementierung der Anmeldung über Google, GitHub oder Facebook verwenden Sie die Bibliothek cpp-httplib in Kombination mit manueller Verarbeitung von OAuth2-Abläufen. Beispiel zum Abrufen eines Access Tokens über HTTP-Anfragen:



#include <httplib.h>#include <nlohmann/json.hpp>#include <iostream>

int main() { httplib::Client cli("https://oauth2.googleapis.com");

// Anfrageparameter (durch eigene ersetzen) auto res = cli.Post("/token", { {"code", "authorization_code"}, {"client_id", "YOUR_CLIENT_ID"}, {"client_secret", "YOUR_CLIENT_SECRET"}, {"redirect_uri", "http://localhost:8080/callback"}, {"grant_type", "authorization_code"} });

if (res && res->status == 200) { auto json = nlohmann::json::parse(res->body); std::cout << "Access token: " << json["access_token"].get<std::string>() << std::endl; } else { std::cerr << "Failed to get token" << std::endl; } return 0;}

Empfehlungen