API Authentifizierung und Authorization
Authentifizierung stellt die Identität eines Clients sicher, Authorization entscheidet, welche Aktionen der Client danach ausführen darf.
Kompakte Beschreibung
API Authentifizierung und Authorization sind zwei grundlegende Sicherheitsmechanismen für Schnittstellen. Authentifizierung überprüft, wer auf die API zugreift, beispielsweise durch API Keys, OAuth2 Tokens oder Zertifikate. Authorization entscheidet, welche Ressourcen und Aktionen ein authentifizierter Nutzer verwenden darf, oft basierend auf Rollen, Berechtigungen oder Attributen. Eine gute Sicherheitsarchitektur trennt beide Konzepte klar, verwendet starke Authentifizierung und prüft Berechtigungen für jeden einzelnen Endpunkt. Nur weil ein Client authentifiziert ist, bedeutet das nicht, dass er alle Daten sehen oder ändern darf. Die korrekte Umsetzung von Authentifizierung und Authorization schützt vor Datendiebstahl, unbefugtem Zugriff und Manipulation.
Wichtige Komponenten
Authentifizierung
Authentifizierung ist der Prozess, der die Identität eines Nutzers oder Clients überprüft. Sie beantwortet die Frage: Wer bist Du? Gängige Verfahren sind Passwörter, API Keys, OAuth2 Tokens, Client-Zertifikate und biometrische Faktoren. Bei APIs wird die Authentifizierung meist über Header oder Token durchgeführt.
Authorization
Authorization ist der Prozess, der nach erfolgreicher Authentifizierung entscheidet, was erlaubt ist. Sie beantwortet die Frage: Was darfst Du tun? Authorization basiert auf Rollen, Rechten, Ressourcenbesitz oder Attributen. Ein Nutzer kann authentifiziert sein, aber trotzdem nur Lesezugriff auf bestimmte Daten haben.
API Keys
API Keys sind einfache, geheime Zeichenfolgen, die der Client bei jeder Anfrage mitgibt. Sie sind leicht zu implementieren, aber weniger sicher als Token-basierte Verfahren. API Keys eignen sich für interne oder öffentliche Schnittstellen mit geringem Risiko, sollten aber über TLS übertragen und regelmäßig erneuert werden.
OAuth2
OAuth2 ist ein Autorisierungsframework, das es Clients ermöglicht, im Namen eines Nutzers auf Ressourcen zuzugreifen, ohne das Passwort preiszugeben. Es definiert verschiedene Flows wie Authorization Code, Client Credentials, Implicit und Device Code. OAuth2 wird für moderne Web- und Mobile-APIs eingesetzt.
OpenID Connect
OpenID Connect ist eine Authentifizierungsschicht auf Basis von OAuth2. Es ermöglicht die Identitätsprüfung eines Nutzers und liefert ein ID Token mit Informationen wie Name und E-Mail. OpenID Connect wird für Single Sign-On und nutzerbasierte Authentifizierung verwendet.
JSON Web Tokens
JSON Web Tokens, kurz JWT, sind kompakte, selbstbeschreibende Token, die Claims enthalten. Sie bestehen aus Header, Payload und Signatur. JWTs werden häufig für API-Authentifizierung und Authorization verwendet, müssen aber korrekt signiert und validiert werden.
RBAC
RBAC steht für Role-Based Access Control. Berechtigungen werden Rollen zugeordnet, Nutzer erhalten eine oder mehrere Rollen. Ein Administrator darf beispielsweise alles, ein Editor nur Inhalte bearbeiten und ein Betrachter nur lesen. RBAC ist einfach zu verstehen und weit verbreitet.
ABAC
ABAC steht für Attribute-Based Access Control. Berechtigungen werden aus Attributen des Nutzers, der Ressource und der Umgebung abgeleitet. Beispiel: Ein Nutzer darf eine Datei nur bearbeiten, wenn er der Eigentümer ist und es Werktags zwischen 9 und 17 Uhr ist. ABAC ist flexibler als RBAC, aber auch komplexer.
Multi-Faktor-Authentifizierung
Multi-Faktor-Authentifizierung verlangt mehrere unabhängige Beweise für die Identität, beispielsweise Passwort und Einmalcode. Für APIs wird MFA oft über zusätzliche Verifizierungsschritte oder Hardware-Token umgesetzt, besonders bei sensiblen Operationen.
Least Privilege Prinzip
Das Least Privilege Prinzip besagt, dass Nutzer und Clients nur die minimalen Berechtigungen erhalten, die sie für ihre Aufgabe benötigen. Geringere Berechtigungen reduzieren das Risiko von Datenlecks und unbefugten Aktionen. Berechtigungen sollten regelmäßig überprüft und angepasst werden.
Praxisbeispiel
Ein Dokumentenmanagement-System bietet verschiedene Endpunkte für verschiedene Rollen an. Die Authentifizierung erfolgt über einen Bearer Token im Authorization Header.
GET /api/v1/documents
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
Der Server prüft den Token und ermittelt die Rolle des Nutzers:
- Ein Viewer erhält nur Lesezugriff.
- Ein Editor darf Dokumente erstellen und bearbeiten.
- Ein Administrator darf Dokumente löschen und Benutzer verwalten.
Beispiel für einen Endpunkt mit RBAC:
DELETE /api/v1/documents/123
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
Ein Editor erhält 403 Forbidden, weil er keine Löschberechtigung hat. Ein Administrator erhält 204 No Content. Authentifizierung und Authorization werden also separat geprüft: Zuerst der Token, dann die Berechtigung.
FAQ: API Authentifizierung und Authorization
1. Was ist der Unterschied zwischen Authentifizierung und Authorization?
2. Was ist ein API Key?
3. Was ist OAuth2?
4. Was ist OpenID Connect?
5. Was ist ein JWT?
6. Was ist RBAC?
7. Was ist ABAC?
8. Was bedeutet Least Privilege?
9. Sollte man API Keys für öffentliche APIs verwenden?
10. Was ist ein Bearer Token?
11. Was ist Multi-Faktor-Authentifizierung?
12. Was ist der Unterschied zwischen OAuth2 Scopes und RBAC?
13. Warum sollte Authorization nicht nur im Client erfolgen?
14. Was ist Token-Refresh?
15. Was sind typische Fehler bei API Sicherheit?
Quellen
- https://datatracker.ietf.org/doc/html/rfc6749
- https://openid.net/connect/
- https://datatracker.ietf.org/doc/html/rfc7519
Buchempfehlungen zur API-Sicherheit
Wenn Du Dich weiter mit API Authentifizierung, Authorization und API-Sicherheit beschäftigen möchtest, empfehlen wir Dir die folgenden Bücher:
Keine Bücher für Kategorie "security" gefunden.