DOCS

Autentikasi OAuth 2.0

Autentikasi layanan backend Anda dengan Zonos menggunakan kriptografi kunci asimetris — tanpa rahasia bersama.

Zonos mendukung autentikasi mesin-ke-mesin melalui OAuth 2.0 JWT Bearer Token Grant (RFC 7523). Layanan Anda menandatangani JWT berumur pendek dengan kunci privat RSA Anda; Zonos memverifikasinya menggunakan kunci publik terdaftar Anda dan mengembalikan token Bearer yang dibatasi ruang lingkup untuk organisasi Anda.

Ringkasan alur:

  1. Buat pasangan kunci RSA dan daftarkan kunci publik Anda dengan Zonos.
  2. Pada saat runtime, tandatangani asersi JWT dengan kunci privat Anda dan POSTkan ke titik akhir token.
  3. Zonos mengembalikan token akses berumur pendek.
  4. Sertakan token akses sebagai Authorization: Bearer <token> pada setiap permintaan API.

Siklus hidup token dan caching 

Token akses berakhir dalam 5 menit secara default. Cache token dan segarkan secara proaktif — jangan minta token baru pada setiap panggilan API. Setiap penyegaran memerlukan asersi JWT yang baru ditandatangani.

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"]

Referensi kesalahan 

Semua kesalahan mengikuti format respons kesalahan OAuth 2.0 (RFC 6749 §5.2):

1{
2 "error": "invalid_grant",
3 "error_description": "JWT assertion has expired"
4}
HTTP StatuserrorPenyebab
400unsupported_grant_typegrant_type bukan urn:ietf:params:oauth:grant-type:jwt-bearer
400invalid_requestBidang yang hilang atau salah bentuk
401invalid_grantTanda tangan tidak valid, asersi kedaluwarsa, organisasi tidak dikenal, atau kunci tidak terdaftar
500server_errorKesalahan internal — hubungi dukungan Zonos jika berlanjut

Penyebab umum invalid_grant:

  • exp berada di masa lalu — pastikan jam sistem Anda tersinkronisasi NTP
  • aud bukan persis "zonos-auth"
  • iss tidak cocok dengan ID Organisasi terdaftar Anda
  • Kunci publik diputar tetapi belum diperbarui dengan Zonos

Praktik terbaik keamanan 

  • Lindungi kunci privat Anda. Simpan di pengelola rahasia khusus — tidak pernah di kontrol sumber, variabel lingkungan, atau log.
  • Jaga asersi tetap berumur pendek. 60–300 detik adalah standar; tidak ada alasan untuk mengeluarkan yang lebih lama.
  • Sertakan jti. Nilai unik per asersi memungkinkan deteksi putar ulang sisi server.
  • Putar pasangan kunci secara berkala. Daftarkan kunci publik baru dengan Zonos sebelum mencabut yang lama untuk menghindari downtime.
  • Jangan pernah log access_token atau nilai assertion. Perlakukan keduanya sebagai kredensial.
Pesan demo

Apakah halaman ini bermanfaat?