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 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
| Status | Code | Bedeutung |
|---|---|---|
| 401 | missing_api_key | Kein Header Authorization: Bearer …. |
| 401 | invalid_api_key | Der Schlüssel stammt nicht von uns oder ist fehlerhaft formatiert. |
| 401 | api_key_revoked | Der Schlüssel wurde widerrufen oder sein Projekt gelöscht. |
| 403 | insufficient_scope | Dem Schlüssel fehlt die Berechtigung, die dieser Endpunkt braucht. |
| 403 | ip_not_allowed | Die Anfrage kam von einer Adresse außerhalb der IP-Allowlist des Schlüssels. |
| 403 | key_not_allowed_in_url | Ein Schlüssel mit Berechtigungen über tsa hinaus wurde in einer URL gesendet. |