Asimetrik anahtar şifrelemesi kullanarak Zonos ile arka uç hizmetlerinizi doğrulayın — paylaşılan sırlar yok.
Zonos, OAuth 2.0 JWT Bearer Token Grant (RFC 7523) aracılığıyla makine-makine kimlik doğrulamasını destekler. Hizmetiniz RSA özel anahtarınızla kısa ömürlü bir JWT imzalar; Zonos, kayıtlı ortak anahtarınızı kullanarak doğrular ve kuruluşunuza özgü bir Bearer belirteci döndürür.
Akış özeti:
Bir RSA anahtar çifti oluşturun ve ortak anahtarınızı Zonos'a kaydedin.
Çalışma zamanında, özel anahtarınızla bir JWT iddiasını imzalayın ve belirteç uç noktasına gönderin.
Zonos kısa ömürlü bir erişim belirteci döndürür.
Her API isteğinde erişim belirtecini Authorization: Bearer <token> olarak ekleyin.
Adım 1 — Ortak anahtarınızı kaydedin (tek seferlik ayar)
4096 bitlik RSA anahtar çifti oluşturun ve ortak anahtarı Zonos'a gönderin. Bu, katılım sürecinde bir kez yapılır.
public_key.pem dosyasını Zonos'a gönderin. private_key.pem dosyasını bir özel sırlar yöneticisinde saklayın (AWS Secrets Manager, HashiCorp Vault, vb.) — asla kaynak kontrolünde veya ortam değişkenlerinde saklamayın.
Zonos anahtarınızı kaydettiğinde Kuruluş Kimliğinizi döndürür, bu da tüm JWT iddialarında iss talebi olur.
Adım 2 — JWT iddiası oluşturun
RS256 kullanarak özel anahtarınızla bir JWT imzalayın. İddia tek bir belirteç değişimi için geçerlidir — son kullanma penceresini kısa tutun (60–300 saniye).
Erişim belirteçleri varsayılan olarak 5 dakika içinde sona erer. Belirteci önbelleğe alın ve proaktif olarak yenileyin — her API çağrısında yeni bir belirteç istemeyin. Her yenileme yeni bir imzalanmış JWT iddiası gerektirir.
OAuth 2.0 kimlik doğrulaması
OAuth 2.0 kimlik doğrulaması
Asimetrik anahtar şifrelemesi kullanarak Zonos ile arka uç hizmetlerinizi doğrulayın — paylaşılan sırlar yok.
Zonos, OAuth 2.0 JWT Bearer Token Grant (RFC 7523) aracılığıyla makine-makine kimlik doğrulamasını destekler. Hizmetiniz RSA özel anahtarınızla kısa ömürlü bir JWT imzalar; Zonos, kayıtlı ortak anahtarınızı kullanarak doğrular ve kuruluşunuza özgü bir Bearer belirteci döndürür.
Akış özeti:
Authorization: Bearer <token>olarak ekleyin.Adım 1 — Ortak anahtarınızı kaydedin (tek seferlik ayar)
4096 bitlik RSA anahtar çifti oluşturun ve ortak anahtarı Zonos'a gönderin. Bu, katılım sürecinde bir kez yapılır.
Anahtar çiftini oluşturun
# Özel anahtarı oluşturunopenssl genrsa -out private_key.pem 4096# Ortak anahtarı çıkarınopenssl rsa -in private_key.pem -pubout -out public_key.pempublic_key.pemdosyasını Zonos'a gönderin.private_key.pemdosyasını bir özel sırlar yöneticisinde saklayın (AWS Secrets Manager, HashiCorp Vault, vb.) — asla kaynak kontrolünde veya ortam değişkenlerinde saklamayın.Zonos anahtarınızı kaydettiğinde Kuruluş Kimliğinizi döndürür, bu da tüm JWT iddialarında
isstalebi olur.Adım 2 — JWT iddiası oluşturun
RS256kullanarak özel anahtarınızla bir JWT imzalayın. İddia tek bir belirteç değişimi için geçerlidir — son kullanma penceresini kısa tutun (60–300 saniye).Gerekli talepler
iss"org_abc123")sub"checkout-service")aud"zonos-auth"olmalıexpiatöğesinden 60–300 saniyeiatjtiJWT başlığı
"alg": "RS256"ve"typ": "JWT"belirtmelidir.Kod örnekleri
import jwt, uuid, timewith open("private_key.pem") as f:private_key = f.read()now = int(time.time())assertion = jwt.encode({"iss": "org_abc123","sub": "checkout-service","aud": "zonos-auth","iat": now,"exp": now + 300,"jti": str(uuid.uuid4()),},private_key,algorithm="RS256",)Adım 3 — İddiayı erişim belirteci için değiştirin
İmzalı JWT'yi Zonos belirteç uç noktasına göndererek kısa ömürlü bir Bearer belirteci alın.
Uç nokta
application/x-www-form-urlencodedde kabul edilir.İstek alanları
grant_type"urn:ietf:params:oauth:grant-type:jwt-bearer"assertionİstek ve yanıt
{"grant_type": "urn:ietf:params:oauth:grant-type:jwt-bearer","assertion": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."}access_tokentoken_type"Bearer"expires_inscopeTam kod örnekleri
import requestsresponse = requests.post("https://auth.zonos.com/oauth/token",json={"grant_type": "urn:ietf:params:oauth:grant-type:jwt-bearer","assertion": assertion,},)data = response.json()access_token = data["access_token"]expires_in = data["expires_in"]Adım 4 — Erişim belirteci ile Zonos API'lerini çağırın
Erişim belirtecini
AuthorizationbaşlığındaBearerbelirteci olarak her Zonos API isteğine ekleyin.Örnek istek
curl -X POST https://api.zonos.com/graphql \-H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..." \-H "Content-Type: application/json" \-d '{ "query": "{ ... }" }'Belirteç yaşam döngüsü ve önbelleğe alma
Erişim belirteçleri varsayılan olarak 5 dakika içinde sona erer. Belirteci önbelleğe alın ve proaktif olarak yenileyin — her API çağrısında yeni bir belirteç istemeyin. Her yenileme yeni bir imzalanmış JWT iddiası gerektirir.
import time, requests_cache = {"access_token": None, "expires_at": 0}def get_access_token():if time.time() < _cache["expires_at"] - 30:return _cache["access_token"]assertion = build_jwt_assertion()data = requests.post("https://auth.zonos.com/oauth/token",json={"grant_type": "urn:ietf:params:oauth:grant-type:jwt-bearer","assertion": assertion,},).json()_cache["access_token"] = data["access_token"]_cache["expires_at"] = time.time() + data["expires_in"]return _cache["access_token"]Hata referansı
Tüm hatalar OAuth 2.0 hata yanıtı biçimini izler (RFC 6749 §5.2):
{"error": "invalid_grant","error_description": "JWT assertion has expired"}error↕400unsupported_grant_typegrant_typetam olarakurn:ietf:params:oauth:grant-type:jwt-bearerdeğildi400invalid_request401invalid_grant500server_errorYaygın
invalid_grantnedenleri:expgeçmişte — sistem saatinizin NTP ile senkronize olduğundan emin olunaudtam olarak"zonos-auth"değilisskayıtlı Kuruluş Kimliğinizle eşleşmiyorGüvenlik en iyi uygulamaları
jtiekleyin. İddia başına benzersiz bir değer sunucu tarafı yeniden yürütme tespitini etkinleştirir.access_tokenveyaassertiondeğerlerini günlüğe kaydetmeyin. Her ikisini de kimlik bilgileri olarak değerlendirin.Bu sayfa faydalı mıydı?