Sağlık ve Anahtar Kontrolü
API'nin ayakta olduğunu ve anahtarınızın ne yapabildiğini söyleyen iki uç.
Genel Bakış
Bu iki uç bir tümleştirmenin ilk iki sorusunu yanıtlar: API ayakta mı ve elimdeki anahtar ne yapabiliyor.
Sağlık kontrolü kimlik istemez; izleme aracı ya da sürüm denetimi için doğrudan çağrılabilir. Anahtar bilgisi ise kimlik ister ama kapsam istemez: geçerli her anahtar kendi yetkilerini okuyabilir.
İkisi birlikte bir teşhis çifti kurar. Sağlık kontrolü geçip anahtar bilgisi düşerse sorun sunucuda değil kimlik bilgisinde aranır.
Referans
Sağlık Kontrolü
API'nin ayakta olduğunu ve sunucu saatini döndürür.
curl 'https://panel.ornek.com/api/v1/admin/ping'const res = await fetch('https://panel.ornek.com/api/v1/admin/ping');
const { data } = await res.json();
const drift = Math.abs(Date.parse(data.time) - Date.now());$ch = curl_init('https://panel.ornek.com/api/v1/admin/ping');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Bu uc ANAHTAR ISTEMEZ: erisilebilmesi anahtarinizin gecerli oldugu anlamina gelmez.
$up = Api::System()->Ping()['data']['pong'] ?? false;Anahtar Bilgisi
Kullandığınız anahtarın kimliğini ve yetkilerini döndürür.
curl 'https://panel.ornek.com/api/v1/admin/whoami' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/whoami', {
headers: { Authorization: `Bearer ${apiKey}` },
});
if (res.status === 401) return promptForKey();
const { data } = await res.json();
const canReadInvoices = data.permissions.some((s) => s.startsWith('Invoices/'));$ch = curl_init('https://panel.ornek.com/api/v1/admin/whoami');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Kapsami ONCEDEN okumak, her cagrida 403 yiyip ogrenmekten iyidir.
$me = Api::System()->Whoami()['data'];
$may = fn (string $s) => in_array($s, $me['permissions'], true)
|| in_array(explode('/', $s)[0] . '/*', $me['permissions'], true);Tuzaklar
Sağlık ucu kimlik doğrulaması yapmaz: anahtarınız iptal edilmiş, süresi dolmuş ya da hiç gönderilmemiş olsa bile başarılı döner. Bir bağlantı sınamasını yalnız buna dayandırmak, gerçek çağrılar başarısız olurken sistemi sağlıklı gösterir.
Dönen saat sunucunun kendi saat dilimini taşır ve sizinkiyle uyuşmayabilir. Diğer uçlardaki tarihler de aynı dilimi taşır, yani bir tarihi kendi saatinize göre karşılaştırmak saatler tutmayan sonuçlar üretir. Bu ucun saatini referans alın.
Yetki listesi tek tek iş adları yerine grup jokeri ya da tümünü kapsayan bir yıldız içerebilir. Bir işin izinli olup olmadığını düz karşılaştırmayla aramak joker taşıyan anahtarlarda yanlış olumsuz verir. Grup jokerini de sınayın.
Bir çağrı 403 döndürdüğünde sebep ya eksik kapsam olur ya da yanlış anahtar. Anahtar bilgisi ucu ikisini bir çağrıda ayırır: uç çalışıyorsa anahtar geçerli sayılır ve sorun kapsamda kalır. Sınırlanmış adres ve aşılmış istek sınırı da burada görünür.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.