OAuth-Sicherheit: Ein Leitfaden für Entwickler (DE)
Erfahren Sie, wie Sie OAuth-Autorisierungsabläufe sichern, Zugriffstoken schützen und häufige Schwachstellen beheben. Implementieren Sie robuste API-Sicherheitsbest Practices mit diesem umfassenden Leitfaden.

OAuth-Sicherheit: Ein Leitfaden für Entwickler
OAuth 2.0 ist der Industriestandard für delegierte Autorisierung. Er ermöglicht Drittanwendungen, im Namen eines Benutzers auf eingeschränkte Ressourcen zuzugreifen, ohne dessen Anmeldeinformationen preiszugeben. Die sichere Implementierung von OAuth ist jedoch komplex. Dieser Leitfaden bietet eine detaillierte Analyse der Best Practices für die OAuth-Sicherheit für Entwickler und behandelt häufige Schwachstellen und Strategien zu deren Behebung.
Wichtige Erkenntnis 1 OAuth-Sicherheit ist nicht nur die Aufgabe des OAuth-Anbieters; sie ist eine gemeinsame Verantwortung zwischen Anbieter, Client-Anwendung und Ressourcen-Server.
Wichtige Erkenntnis 2 Die korrekte Validierung von Redirect-URIs ist entscheidend, um Angriffe durch Abfangen von Autorisierungscodes zu verhindern.
Wichtige Erkenntnis 3 Die Verwendung von kurzlebigen Zugriffstoken und die Rotation von Refresh-Token reduzieren das Risiko einer Kompromittierung von Token erheblich.
Wichtige Erkenntnis 4 Die regelmäßige Überprüfung Ihrer OAuth-Implementierung und die Einhaltung aktueller Sicherheitsbest Practices ist unerlässlich.
Verständnis der OAuth-Abläufe und Schwachstellen
OAuth 2.0 definiert verschiedene Grant Types, die jeweils für unterschiedliche Anwendungsszenarien geeignet sind. Die gebräuchlichsten sind:
- Authorization Code Grant: Wird für Web- und mobile Anwendungen verwendet, bei denen der Client ein Client Secret sicher speichern kann.
- Implicit Grant: (Veraltet) Wird für Single-Page-Anwendungen (SPAs) verwendet, ist aber weniger sicher, da Zugriffstoken in der URL offengelegt werden.
- Resource Owner Password Credentials Grant: (Nicht empfohlen) Erfordert, dass der Client den Benutzernamen und das Passwort des Benutzers erhebt, was ein Sicherheitsrisiko darstellt.
- Client Credentials Grant: Wird für die Maschinen-zu-Maschinen-Authentifizierung verwendet, wenn kein Benutzerkontext verfügbar ist.
Während des OAuth-Ablaufs können verschiedene Schwachstellen auftreten:
- Abfangen von Autorisierungscodes: Angreifer leiten Benutzer auf eine bösartige Website um, die dem Autorisierungsserver ähnelt, und stehlen den Autorisierungscode.
- Manipulation der Redirect-URI: Ausnutzung falsch konfigurierter Redirect-URIs, um Autorisierungscodes an von Angreifern kontrollierte Server zu senden.
- Cross-Site Request Forgery (CSRF): Angreifer bringen Benutzer dazu, eine bösartige Anwendung zu autorisieren.
- Token-Diebstahl: Kompromittierung von Zugriffstoken oder Refresh-Token durch Speicherlücken oder Netzwerterfassung.
- Client-Impersonation: Angreifer verwenden eine kompromittierte Client-ID und ein kompromittiertes Secret, um auf Ressourcen zuzugreifen.
Sicherung Ihrer OAuth-Implementierung
Die Behebung dieser Schwachstellen erfordert einen mehrschichtigen Ansatz:
1. Validierung der Redirect-URI
Validieren Sie Redirect-URIs streng. Erlauben Sie nur vorab registrierte und explizit definierte Redirect-URIs. Implementieren Sie einen Whitelist-Ansatz und vermeiden Sie Wildcard-Muster. Stellen Sie sicher, dass auch das Redirect-URI-Schema (http vs. https) validiert wird. OAuth 2.0 RFC 6749 Abschnitt 3.1.2 betont die Bedeutung der Redirect-URI-Validierung.
2. State-Parameter und Nonce
Verwenden Sie den state-Parameter, um CSRF-Angriffe zu verhindern. Generieren Sie einen kryptografisch zufälligen state-Wert, bevor Sie zum Autorisierungsserver umleiten, und überprüfen Sie ihn beim Empfang des Callbacks. Erwägen Sie auch die Verwendung eines nonce-Parameters für zusätzliche Sicherheit.
3. PKCE (Proof Key for Code Exchange)
Implementieren Sie PKCE, insbesondere für öffentliche Clients (z. B. mobile Apps, SPAs), die ein Client Secret nicht sicher speichern können. PKCE fügt eine zusätzliche Schutzebene hinzu, indem sichergestellt wird, dass nur die Anwendung, die die Autorisierungsanfrage initiiert hat, den Autorisierungscode gegen ein Zugriffstoken austauschen kann.
// Beispiel PKCE-Code (vereinfacht)// Generieren Sie einen Code Verifierlet codeVerifier = generateRandomString();// Generieren Sie eine Code Challenge aus dem Code Verifierlet codeChallenge = generateCodeChallenge(codeVerifier);// Fügen Sie codeChallenge und codeChallengeMethod in die Autorisierungsanfrage ein// ...// Tauschen Sie den Autorisierungscode gegen ein Zugriffstoken aus und geben Sie den Code Verifier an// ...
4. Token-Management
Verwenden Sie kurzlebige Zugriffstoken, um die Auswirkungen einer Token-Kompromittierung zu minimieren. Implementieren Sie die Rotation von Refresh-Token, bei der mit jedem Refresh eines Zugriffstokens ein neues Refresh-Token ausgegeben wird, wodurch das vorherige Refresh-Token ungültig wird. Speichern Sie Token sicher mithilfe von Verschlüsselung und Zugriffskontrollen. Speichern Sie Token niemals im Client-seitigen Code.
API-Sicherheitsaspekte
Die Sicherung Ihrer API-Endpunkte ist genauso wichtig wie die Sicherung des OAuth-Ablaufs. Implementieren Sie diese Best Practices:
- Token-Validierung: Validieren Sie Zugriffstoken gründlich, bevor Sie den Zugriff auf Ressourcen gewähren. Überprüfen Sie die Signatur, die Ablaufzeit und das Publikum (
aud-Claim) des Tokens. - Scope-Validierung: Erzwingen Sie Scope-Beschränkungen. Stellen Sie sicher, dass das Zugriffstoken die erforderlichen Scopes besitzt, um auf die angeforderte Ressource zuzugreifen.
- Rate Limiting: Implementieren Sie Rate Limiting, um Missbrauch und Denial-of-Service-Angriffe zu verhindern.
- Input-Validierung: Validieren Sie alle API-Eingaben, um Injection-Angriffe zu verhindern.
- HTTPS Only: Erzwingen Sie HTTPS für die gesamte API-Kommunikation.
Wie Didit hilft
Didit bietet robuste Identitätsprüfungs- und Risikobewertungsfunktionen, die die OAuth-Sicherheit ergänzen. Durch die Integration von Didit in Ihren OAuth-Ablauf können Sie:
- Benutzeridentität verifizieren, bevor Sie Zugriffstoken ausgeben.
- Betrügerische Aktivitäten erkennen und unbefugten Zugriff verhindern.
- API-Sicherheit verbessern mit risikobasierter Zugriffskontrolle.
- Gesetzliche Anforderungen in Bezug auf Identitätsprüfung und AML einhalten.
Das AML-Screening-Modul von Didit kann integriert werden, um Benutzer während des OAuth-Prozesses anhand globaler Beobachtungslisten zu überprüfen und eine zusätzliche Sicherheitsebene hinzuzufügen.
Bereit zum Starten?
Die Implementierung einer robusten OAuth-Sicherheit ist entscheidend für den Schutz Ihrer Anwendung und Ihrer Benutzerdaten. Indem Sie die in diesem Leitfaden beschriebenen Best Practices befolgen, können Sie das Risiko von OAuth-bezogenen Schwachstellen erheblich reduzieren.
Ressourcen: