DOCS

OAuth 2.0-Authentifizierung

Authentifizieren Sie Ihre Backend-Services bei Zonos mit asymmetrischer Schlüsselkryptografie — ohne gemeinsame Geheimnisse.

Zonos unterstützt Machine-to-Machine-Authentifizierung über OAuth 2.0 JWT Bearer Token Grant (RFC 7523). Ihr Service signiert ein kurzlebiges JWT mit Ihrem RSA-Privatschlüssel; Zonos verifiziert es mit Ihrem registrierten öffentlichen Schlüssel und gibt ein Bearer-Token zurück, das auf Ihre Organisation beschränkt ist.

Ablaufübersicht:

  1. Generieren Sie ein RSA-Schlüsselpaar und registrieren Sie Ihren öffentlichen Schlüssel bei Zonos.
  2. Signieren Sie zur Laufzeit eine JWT-Assertion mit Ihrem Privatschlüssel und senden Sie sie per POST an den Token-Endpunkt.
  3. Zonos gibt ein kurzlebiges Access Token zurück.
  4. Fügen Sie das Access Token als Authorization: Bearer <token> bei jeder API-Anfrage hinzu.

Token-Lebenszyklus und Caching 

Access Tokens laufen standardmäßig nach 5 Minuten ab. Cachen Sie das Token und erneuern Sie es proaktiv — fordern Sie nicht bei jedem API-Aufruf ein neues Token an. Jede Erneuerung erfordert eine neu signierte JWT-Assertion.

1import time, requests
2 
3_cache = {"access_token": None, "expires_at": 0}
4 
5def get_access_token():
6 if time.time() < _cache["expires_at"] - 30:
7 return _cache["access_token"]
8 
9 assertion = build_jwt_assertion()
10 data = requests.post(
11 "https://auth.zonos.com/oauth/token",
12 json={
13 "grant_type": "urn:ietf:params:oauth:grant-type:jwt-bearer",
14 "assertion": assertion,
15 },
16 ).json()
17 
18 _cache["access_token"] = data["access_token"]
19 _cache["expires_at"] = time.time() + data["expires_in"]
20 return _cache["access_token"]

Fehlerreferenz 

Alle Fehler folgen dem OAuth 2.0-Fehlerantwortformat (RFC 6749 §5.2):

1{
2 "error": "invalid_grant",
3 "error_description": "JWT assertion has expired"
4}
HTTP-StatuserrorUrsache
400unsupported_grant_typegrant_type war nicht urn:ietf:params:oauth:grant-type:jwt-bearer
400invalid_requestFehlendes oder fehlerhaftes Feld
401invalid_grantUngültige Signatur, abgelaufene Assertion, unbekannte Organisation oder nicht registrierter Schlüssel
500server_errorInterner Fehler — wenden Sie sich bei anhaltenden Problemen an den Zonos-Support

Häufige Ursachen für invalid_grant:

  • exp liegt in der Vergangenheit — stellen Sie sicher, dass Ihre Systemuhr NTP-synchronisiert ist
  • aud ist nicht exakt "zonos-auth"
  • iss stimmt nicht mit Ihrer registrierten Organization ID überein
  • Öffentlicher Schlüssel wurde rotiert, aber noch nicht bei Zonos aktualisiert

Sicherheits-Best Practices 

  • Schützen Sie Ihren Privatschlüssel. Speichern Sie ihn in einem dedizierten Secrets Manager — niemals in der Quellcodeverwaltung, Umgebungsvariablen oder Logs.
  • Halten Sie Assertions kurzlebig. 60–300 Sekunden sind Standard; es gibt keinen Grund, längere auszustellen.
  • Fügen Sie jti hinzu. Ein eindeutiger Wert pro Assertion ermöglicht serverseitige Replay-Erkennung.
  • Rotieren Sie Schlüsselpaare regelmäßig. Registrieren Sie einen neuen öffentlichen Schlüssel bei Zonos, bevor Sie den alten widerrufen, um Ausfallzeiten zu vermeiden.
  • Protokollieren Sie niemals access_token- oder assertion-Werte. Behandeln Sie beides als Anmeldedaten.

War diese Seite hilfreich?