Canlı akışlar ve webhook
Webhook, imza ve tekrar teslim
Server-to-server bildirimleri de tekrar gelebilir.
Kavramı anlayalım
Webhook, bir servisin olay olduğunda başka servise HTTP isteği göndermesidir. Browser CORS burada erişim duvarı değildir. Receiver gönderici kimliğini ve payload bütünlüğünü sağlayıcının belgelenmiş signature mekanizmasıyla doğrulamalıdır. Raw body üzerinde imza gerekiyorsa önce JSON parse edip yeniden serialize etmek doğrulamayı bozabilir.
Timestamp ve replay penceresi, teslim kimliği ve idempotent işleme tasarlanır. Aynı event tekrar gelebilir; “her POST yeni işlem” varsayımı duplicate yaratır. Kısa sürede güvenli kabul + durable queue ve arka plan işleme gerekebilir; başarı yanıtı vermeden olayı kaybetmeyecek şekilde sakla.
Sadece kaynak IP’ye güvenmek veya secret query parametresi taşımak güçlü bir genel çözüm değildir. Provider’ın retry ve sıra garantisini oku. Sıradışı olay sırası ve geç teslimi business modeliyle uzlaştır. Örnek imza alan adları provider’a özel olabilir; kendi formatını evrensel standart sanma.
Ödeme, CI ve dış servis bildirimlerini güvenli işlemek için.
Webhook event’inin sadece bir kez geleceğini varsaymak.
Aynı konu. Üç farklı derinlik.
POST /hooks/provider HTTP/1.1
Host: example.test
Content-Type: application/jsonReceiver normal HTTP endpoint’tir.
Bu sayfa dış sunuculara istek göndermez. HTTP mesajları temsili, HTTP/1.1 biçiminde okunabilir gösterimlerdir; HTTP/2 ve HTTP/3 wire formatı değildir. example.test ayrılmış öğretim alan adıdır. Komut ve JavaScript örneklerini yalnız kendi test ortamında uygula; gerçek token veya cookie yayımlama.
Önce kendin dene.
Aynı event yeniden geldiyse tekrar ödeme kaydı oluşturmalı mısın?
Çözümü ve açıklamasını göster
Same event → one logical business effectHayır; durable dedup ve business idempotency gerekir.