Zum Inhalt springen

Authentifizierung

Jede Anfrage trägt einen geheimen API-Schlüssel im Header Authorization, als Bearer-Token. Schlüssel gehören zu einem Projekt Ihrer Organisation, und jeder kann nur, was seine Berechtigungen erlauben.

curl
curl https://api.kennmarq.com/v1/usage \
  -H "Authorization: Bearer $KENNMARQ_API_KEY"

Schlüsselformat

Ein Schlüssel besteht aus sk_live_ oder sk_test_, gefolgt von 43 Buchstaben und Ziffern (256 Zufallsbits). Am Präfix erkennen Sie und wir, in welcher Umgebung er funktioniert. Das Dashboard zeigt von jedem Schlüssel die ersten Zeichen und die letzten vier, sodass Sie Schlüssel auseinanderhalten können, ohne ihren geheimen Wert zu sehen.

Schlüssel geheim halten

  • Verwenden Sie Schlüssel nur von Ihren Servern aus: nie in einem Browser, einer mobilen App oder einem öffentlichen Repository.
  • Wir speichern einen SHA-256-Hash jedes Schlüssels und zeigen den Schlüssel einmal an, wenn er erstellt wird. Ein zweites Mal können wir ihn nicht anzeigen.
  • Zum Rotieren erstellen Sie den neuen Schlüssel, rollen ihn aus und widerrufen dann im Dashboard den alten. Ein widerrufener Schlüssel funktioniert sofort nicht mehr.
  • Beschränken Sie Live-Schlüssel mit einer IP-Allowlist auf die Adressen Ihrer Server.
  • Jedes Erstellen, Ändern oder Widerrufen eines Schlüssels wird im Audit-Log Ihrer Organisation festgehalten.

Schlüssel in URLs

Nur ein Endpunkt erwartet seinen Schlüssel in der URL: POST /v1/tsa/{key}, weil die C2PA-Bibliothek, die ihn aufruft, keine Header senden kann. Eine URL landet in Logs, deshalb akzeptiert dieser Endpunkt nur Schlüssel, deren einzige Berechtigung tsa ist, und lehnt jeden anderen Schlüssel mit 403 key_not_allowed_in_url ab. Passiert das, rotieren Sie den gesendeten Schlüssel.

Authentifizierungsfehler

Authentifizierungsfehler
StatusCodeBedeutung
401missing_api_keyKein Header Authorization: Bearer ….
401invalid_api_keyDer Schlüssel stammt nicht von uns oder ist fehlerhaft formatiert.
401api_key_revokedDer Schlüssel wurde widerrufen oder sein Projekt gelöscht.
403insufficient_scopeDem Schlüssel fehlt die Berechtigung, die dieser Endpunkt braucht.
403ip_not_allowedDie Anfrage kam von einer Adresse außerhalb der IP-Allowlist des Schlüssels.
403key_not_allowed_in_urlEin Schlüssel mit Berechtigungen über tsa hinaus wurde in einer URL gesendet.