İçeriğe geç
Belgeler menüsüİstek imzası

İstek imzası. Sunucudan gelenin sunucunuzdan geldiğini kanıtlayın.

Sunucu kaynakları her isteği imza anahtarıyla (sk_…) imzalar. Kaynakta İmza zorunlu açıksa imzasız ya da hatalı imzalı istek reddedilir; böylece yazma anahtarını ele geçiren biri sunucunuz adına olay gönderemez.

Başlık ve hesaplama

İmza Metrics-Signature: t=<unix saniye>,v1=<hex> başlığıyla gider. v1 = hex(HMAC-SHA256(imzaAnahtarı, t + "." + hamGövde)): imza gönderilen baytların tam kendisi üzerinden hesaplanır.

Node.js, bağımlılıksız · JavaScript
import { createHmac } from 'node:crypto';

const body = JSON.stringify({ userId: 'usr_7c1e', event: 'signup_completed', messageId: 'signup:7c1e' });
const t = Math.floor(Date.now() / 1000);
const v1 = createHmac('sha256', process.env.METRICS_SIGNING_SECRET).update(`${t}.${body}`).digest('hex');

await fetch('https://collect.<alan>/v1/track', {
  method: 'POST',
  headers: {
    authorization: `Basic ${Buffer.from(`${process.env.METRICS_WRITE_KEY}:`).toString('base64')}`,
    'content-type': 'application/json',
    'metrics-signature': `t=${t},v1=${v1}`,
  },
  body,
});

Kurallar

  • t sunucu saatinden ±300 sn dışındaysa istek 401 signature_expired alır; sunucunuzun saatini NTP ile eşitleyin.
  • Anahtar yenilenirken başlık birden çok v1= değeri taşıyabilir; biri geçerliyse istek kabul edilir.
  • İmza zorunlu kaynakta imzasız istek 401 signature_required, yanlış imza 401 signature_invalid alır.
  • Segment istemcileri imza atamaz: imza zorunlu kaynaklarda Postlip Metrics SDK’sını kullanın.
  • POST /v1/ping gövdesi {} ile imzalanır ve imzanın durumunu (valid ya da absent) döner; hiçbir şey kaydetmez.