Zum Hauptinhalt springen

API-Authentifizierung

API-Authentifizierungs- und Autorisierungsmethoden

1. API-Schlüssel (API Keys)

  • Merkmale:

    • Ein API-Schlüssel ist eine eindeutige Zeichenfolge, die als Authentifizierungsnachweis dient. Er wird üblicherweise im Header oder als URL-Parameter einer Anfrage mitgesendet.
    • API-Schlüssel sind einfach zu implementieren und eignen sich besonders für einfache, nicht-sensible Anwendungen.
  • Beispiel:

    GET /api/data
    Host: api.example.com
    Authorization: Api-Key abc123xyz
  • Vorteile:

    • Schnell und einfach zu implementieren.
    • Gut geeignet für Projekte, bei denen die Sicherheit weniger kritisch ist, z.B. öffentliche APIs.
  • Nachteile:

    • API-Schlüssel bieten nur eine geringe Sicherheit, da sie leicht abgefangen und weiterverwendet werden können, wenn keine zusätzliche Verschlüsselung (HTTPS) vorhanden ist.
    • Keine Möglichkeit zur Nutzeridentifizierung oder Autorisierung, da API-Schlüssel in der Regel für die gesamte API gelten.

2. Basic Authentication

  • Merkmale:

    • Basic Auth basiert auf der Übermittlung eines Benutzername-Passwort-Paares als Base64-codierter String.
    • Bei jedem API-Request wird dieser String im Header übergeben.
  • Beispiel:

    GET /api/user
    Host: api.example.com
    Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
    • Hierbei ist dXNlcm5hbWU6cGFzc3dvcmQ= der Base64-verschlüsselte Wert von username:password.
  • Vorteile:

    • Einfach zu implementieren, insbesondere für APIs, die auf Authentifizierung auf Benutzerebene basieren.
  • Nachteile:

    • Geringe Sicherheit, da Benutzername und Passwort bei jedem Request übermittelt werden.
    • Sollte nur mit HTTPS verwendet werden, da die Daten ansonsten abgefangen werden können.
    • Ungeeignet für langfristige Authentifizierung, da die Benutzeranmeldedaten nicht rotieren.

3. OAuth 2.0

  • Merkmale:

    • OAuth 2.0 ist ein standardisiertes Authentifizierungsprotokoll, das Zugriffstoken verwendet, um API-Zugriffe zu autorisieren.
    • Token werden nach einer Authentifizierung mit einem Auth-Server ausgestellt und in einem bestimmten Intervall erneuert.
    • OAuth wird oft für Drittanbieter-Integrationen und Webanwendungen verwendet.
  • Beispiel:

    • Ablauf für OAuth 2.0:
      1. Der Client fordert ein Zugangstoken vom Authentifizierungsserver an, typischerweise über eine Login-Seite.
      2. Der Server stellt ein Access Token und eventuell ein Refresh Token aus.
      3. Der Client übermittelt das Access Token bei jeder Anfrage im Header.
    GET /api/userinfo
    Host: api.example.com
    Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
  • Vorteile:

    • Sicher und gut geeignet für Anwendungen, bei denen Zugriff auf sensible Informationen gewährt wird.
    • Unterstützung von Multi-Faktor-Authentifizierung und Rollenmanagement.
    • Ermöglicht Drittanbietern, sicher auf APIs zuzugreifen, ohne dass Benutzer Passwörter teilen müssen.
  • Nachteile:

    • Komplexer in der Implementierung, da ein separater Authentifizierungsserver und eine Token-Verwaltung erforderlich sind.
    • Die Token müssen regelmäßig erneuert werden, was zusätzlichen Aufwand bedeutet.

4. JWT (JSON Web Tokens)

👉 Gute Seite um Token zu erstellen oder zu testen - jwt.io

  • Merkmale:

    • JWTs sind JSON-basierte Token, die Benutzerinformationen und Authentifizierungsdaten enthalten.
    • Der Token besteht aus drei Teilen (Header, Payload, Signatur), die Base64-codiert und mit einer Signatur versehen sind.
    • JWT wird häufig zusammen mit OAuth 2.0 verwendet oder als Standalone-Lösung für die Authentifizierung implementiert.
  • Beispiel:

    Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6Ikpv
    aG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
  • Vorteile:

    • Ein JWT kann alle Informationen für die Authentifizierung enthalten und benötigt keinen Datenbank-Lookup bei jeder Anfrage.
    • Flexibel und gut geeignet für moderne Web- und Mobile-Anwendungen.
    • Kann für Autorisierungsrollen und -rechte angepasst werden.
  • Nachteile:

    • Wenn ein Token kompromittiert wird, hat ein Angreifer potenziell langfristigen Zugriff, es sei denn, das Token wird zurückgesetzt.
    • Ohne Token-Blacklist-Mechanismus können Tokens auch nach Abmeldung gültig bleiben.

Auswahl der Authentifizierungsmethode

Hier einige Leitfragen, um die richtige Authentifizierungsmethode für deine API zu finden:

  • Wie sensibel sind die Daten? OAuth 2.0 oder JWT sind in der Regel besser geeignet für APIs, die sensible Daten enthalten, da sie eine höhere Sicherheit bieten.
  • Wer greift auf die API zu? Für öffentliche APIs oder APIs mit vielen externen Nutzern könnte ein API-Schlüssel ausreichen. Für private oder Benutzer-basierte APIs ist OAuth oder JWT vorteilhafter.
  • Wie komplex ist das Projekt? Basic Auth oder API-Schlüssel sind einfach zu implementieren, während OAuth 2.0 für umfangreiche, komplexe Anwendungen geeignet ist.