DOCS

OAuth 2.0-autentisering

Autentisera era backend-tjänster med Zonos med hjälp av asymmetrisk nyckelkryptering — inga delade hemligheter.

Zonos stöder autentisering mellan maskiner via OAuth 2.0 JWT Bearer Token Grant (RFC 7523). Er tjänst signerar en kortlivad JWT med er privata RSA-nyckel; Zonos verifierar den med hjälp av er registrerade publika nyckel och returnerar en Bearer-token knuten till er organisation.

Sammanfattning av flödet:

  1. Generera ett RSA-nyckelpar och registrera er publika nyckel hos Zonos.
  2. Vid körning signerar ni en JWT-assertion med er privata nyckel och skickar den (POST) till token-endpointen.
  3. Zonos returnerar en kortlivad åtkomsttoken.
  4. Inkludera åtkomsttoken som Authorization: Bearer <token> i varje API-förfrågan.

Tokens livscykel och cachning 

Åtkomsttokens upphör att gälla efter 5 minuter som standard. Cacha token och förnya den proaktivt — begär inte en ny token vid varje API-anrop. Varje förnyelse kräver en nysignerad 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"]

Felreferens 

Alla fel följer OAuth 2.0:s format för felsvar (RFC 6749 §5.2):

1{
2 "error": "invalid_grant",
3 "error_description": "JWT assertion has expired"
4}
HTTP-statuserrorOrsak
400unsupported_grant_typegrant_type var inte urn:ietf:params:oauth:grant-type:jwt-bearer
400invalid_requestSaknat eller felaktigt formaterat fält
401invalid_grantOgiltig signatur, utgången assertion, okänd organisation eller oregistrerad nyckel
500server_errorInternt fel — kontakta Zonos support om problemet kvarstår

Vanliga orsaker till invalid_grant:

  • exp ligger i det förflutna — säkerställ att er systemklocka är NTP-synkroniserad
  • aud är inte exakt "zonos-auth"
  • iss matchar inte ert registrerade organisations-ID
  • Den publika nyckeln har roterats men ännu inte uppdaterats hos Zonos

Bästa praxis för säkerhet 

  • Skydda er privata nyckel. Lagra den i en dedikerad hemlighetshanterare — aldrig i källkodshantering, miljövariabler eller loggar.
  • Håll assertions kortlivade. 60–300 sekunder är standard; det finns ingen anledning att utfärda längre sådana.
  • Inkludera jti. Ett unikt värde per assertion möjliggör serversidans replay-detektering.
  • Rotera nyckelpar regelbundet. Registrera en ny publik nyckel hos Zonos innan ni återkallar den gamla för att undvika driftstopp.
  • Logga aldrig värden för access_token eller assertion. Behandla båda som autentiseringsuppgifter.
Boka en demo

Var den här sidan till hjälp?