Zum Hauptinhalt springen

Case Study: Authentifizierung einer Legacy C++ Anwendung über Reverse Proxy

Diese Case Study zeigt, wie sich eine Legacy-C++-Anwendung über einen lokalen Reverse Proxy an moderne Authentifizierungsverfahren anbinden ließ, ohne die bestehende Codebasis riskant umzubauen.

Ausgangssituation

Eine geschäftskritische C++ Windows-Anwendung musste Daten von einem modernen Analyse-Webservice abrufen.

Die Anwendung war jedoch historisch gewachsen und unterstützte ausschließlich anonyme HTTP-Aufrufe.
Moderne Authentifizierungsverfahren wie OAuth 2.0 oder OpenID Connect waren in der bestehenden Codebasis nicht implementiert.

Eine direkte Anpassung der C++-Anwendung hätte bedeutet:

  • tiefgreifende Änderungen an einer alten, sensiblen Codebasis
  • hohes Risiko für Regressionen
  • erheblicher Entwicklungs- und Testaufwand
  • potenzielle Inkompatibilitäten mit bestehenden Deployments

Architektur-Entscheidung

Statt die Legacy-Anwendung umzubauen, wurde eine entkoppelte Lösung implementiert.

Ich entwickelte einen lokalen Reverse-Proxy-Dienst in .NET, der auf dem gleichen System wie die C++-Anwendung betrieben wurde.

Die Architektur sah wie folgt aus:

  1. Die C++-Anwendung kommuniziert weiterhin per HTTP – jedoch mit dem lokalen Proxy.
  2. Der Proxy übernimmt die Authentifizierung gegenüber dem Identity Provider (OAuth 2.0 / OpenID Connect).
  3. Nach erfolgreicher Autorisierung werden Access Tokens sicher verwaltet.
  4. Der Proxy leitet die Anfrage an den Ziel-Webservice weiter – angereichert mit gültigen Authentifizierungs-Headern.
  5. Die Antwort wird transparent an die C++-Anwendung zurückgegeben.

Die Legacy-Anwendung blieb unverändert.


Technische Schwerpunkte

  • Implementierung eines sicheren Reverse-Proxy-Dienstes in .NET
  • OAuth 2.0 / OIDC-Flow mit Token-Handling
  • Sichere Speicherung und Erneuerung von Access Tokens
  • Minimierung der Angriffsfläche durch lokale Kommunikation
  • Trennung von Legacy-Code und Sicherheitslogik

Ergebnis

  • Keine Änderung der bestehenden C++-Codebasis erforderlich
  • Deutliche Reduktion von Projektrisiko und Implementierungskosten
  • Einführung moderner Authentifizierung ohne Systembruch
  • Erhöhung der Sicherheit durch zentrale Token-Verwaltung
  • Zukunftssichere Architektur mit klarer Entkopplung

Die Lösung ermöglichte eine kontrollierte Modernisierung, ohne ein geschäftskritisches System zu destabilisieren.