Zum Inhalt

Authentifizierung — API v2

Die API v2 verwendet Bearer-Token-Authentifizierung via Laravel Sanctum.

Token erstellen

POST /auth/token ist der Weg für programmatische Clients und verlangt neben E-Mail und Passwort den API-Key des Benutzers im Header X-REST-API-KEY:

curl -X POST "https://ihre-instanz.example.com/api/v2/auth/token" \
  -H "Content-Type: application/json" \
  -H "X-REST-API-KEY: {api-key-des-benutzers}" \
  -d '{
    "email": "user@example.com",
    "password": "IhrPasswort",
    "token_name": "api-client"
  }'

Antwort:

{
  "data": {
    "token": "1|a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0",
    "type": "bearer"
  },
  "meta": { "api_version": "2.0" }
}

Der API-Key steht unter Administration → Benutzer → [Benutzer] → API-Key; neue Benutzer bekommen ihn automatisch. Fehlt der Header, antwortet der Endpunkt mit 422, bei falschem Key mit 401 Invalid API key.

Interaktiver Login

Für den Login aus einer Oberfläche gibt es POST /auth/login mit {"email": …, "password": …} — ohne API-Key, dafür mit Passwort-Ablauf- und Sperr-Logik. /auth/token ist für Integrationen gedacht.

Der Benutzer braucht in beiden Fällen die Operation using_API, sonst antwortet jeder API-Aufruf mit 403.

Langlebiges API-Token (ohne Passwort)

Für dauerhafte Integrationen ist der Umweg über /auth/token unnötig: ein Administrator stellt unter Administration → Benutzer → [Benutzer] → API-Token ein Token aus, das direkt als Bearer verwendet wird.

Das ist der bevorzugte Weg für Maschinen-zu-Maschinen-Zugriffe, denn die Gegenstelle speichert dann nur diesen einen Wert — kein Passwort, kein API-Key. Das Passwort des Service-Benutzers ist zugleich ein Oberflächen-Login, ein Leak der Gegenstellen-Konfiguration gibt damit sonst mehr her als den API-Zugriff.

API-Token API-Key + Login
Zu hinterlegende Werte 1 (Token) 3 (Key, E-Mail, Passwort)
Passwort bei der Gegenstelle nein ja
Einzeln widerrufbar ja nein (Key gilt für alle)
Ablaufdatum optional keins
Erneuerung durch den Client nicht möglich automatisch bei 401

Ein Token trägt die vollen Rechte seines Benutzers — Sanctum-Abilities werden nicht ausgewertet, die Rolle ist die Berechtigungsgrenze. Der Klartext wird genau einmal bei der Ausgabe angezeigt (gespeichert wird nur ein SHA-256-Hash); ein neues Token entwertet bestehende nicht, verloren gegangene lassen sich also gefahrlos ersetzen. Beim Löschen eines Benutzers werden seine Token und sein API-Key sofort ungültig.

Token verwenden

Der Token wird als Authorization-Header in allen nachfolgenden Anfragen mitgesendet:

curl -X GET "https://ihre-instanz.example.com/api/v2/inventories" \
  -H "Authorization: Bearer 1|a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0" \
  -H "Accept: application/json"

Berechtigungen

Permission Beschreibung
inventory_view Inventar lesen
inventory_edit Inventar erstellen/bearbeiten, Kategorien verwalten
inventory_delete Inventar löschen
calibration_view Kalibrierungen lesen
calibration_edit Kalibrierungen erstellen/bearbeiten
customers_view Kunden lesen
customers_edit Kunden erstellen/bearbeiten

Fehlercodes

HTTP-Status Bedeutung
401 Unauthorized Fehlende oder ungültige Anmeldedaten
403 Forbidden Authentifizierung erfolgreich, aber fehlende Berechtigung
404 Not Found Angeforderter Endpunkt oder Datensatz existiert nicht
422 Unprocessable Entity Validierungsfehler
500 Internal Server Error Serverfehler — prüfen Sie die Anwendungslogs

Hinweise

  • Übertragen Sie Anmeldedaten ausschließlich über HTTPS
  • Tokens können jederzeit widerrufen und neu erstellt werden
  • Für automatisierte Systeme empfiehlt sich ein dediziertes Benutzerkonto mit eingeschränkter Rolle
  • Die Berechtigungsprüfung unterliegt denselben Regeln wie die Weboberfläche (RBAC)