Kimlik Doğrulama
Shopify Flow webhook'unuzu statik belirteç veya HMAC SHA-256 imzasıyla koruyun; Stripe, GitHub ve Slack gibi göndericiler için hazır ayarları kullanın.
Bir webhook URL’sini bilen herkes bu URL’ye istek gönderebilir; bu nedenle, bir yabancının Shopify Flow iş akışlarınızı tetiklemesini engelleyen şey kimlik doğrulamadır. Bu ayarı, her bir webhook için ayrı ayrı, webhook’un Güvenlik bölümünden yapabilirsiniz.
Üç yöntem
| Yöntem | Arayanın kimliğini nasıl kanıtladığı | Şu durumlarda kullanın: |
|---|---|---|
| Yok | Hiçbir şey | Yalnızca test amaçlıdır - asla üretim ortamında kullanılmaz |
| Statik belirteç | Bir istek başlığında sabit bir gizli değer | Hemen hemen her entegrasyon (n8n, Make, Zapier, kendi kodunuz) |
| HMAC SHA-256 | İstek ve paylaşılan gizli anahtardan hesaplanan bir imza | Gönderici, webhook’larını imzalar (Stripe, GitHub, Slack, …) |
Statik belirteç
Güçlü bir rastgele belirteç elde etmek için webhook üzerindeki “oluştur” düğmesine basın ya da kendi belirteçinizi yapıştırın. Çağrı yapan taraf bunu bir başlık içinde gönderir:

curl -X POST https://your-app-url/webhook/ab12cd34 \
-H "Content-Type: application/json" \
-H "X-Api-Key: your-token" \
-d '{"orderId":"1001"}'Başlık adını değiştirme
Bazı sistemler yalnızca halihazırda kullandıkları bir başlığı gönderebilir. Gelişmiş Ayarlar’da Auth başlık adını belirleyin; biz de X-Api-Key yerine o başlıktan jetonu okuruz:
-H "X-Custom-Auth: your-token"Başlık adlarında büyük/küçük harf ayrımı yapılmaz. Ayrılmış adlar reddedilir - Host, Authorization, Cookie, X-Forwarded-*, X-Webhook-*, CF-* ve benzeri. Bunlar, proxy sunucuları ve CDN’ler tarafından ayarlanır veya yeniden yazılır; dolayısıyla bunlardan okunan bir jeton, saldırgan tarafından kontrol edilebilir hale gelir.
Token'ın gittiği yerler
Her gönderen, istediği başlığı ekleyemez. Gönderen, jetonu nasıl iletir? “Webhook” sekmesinde bunun için dört seçenek sunulmaktadır:
| Seçim | Gönderici şunları gönderir: | Şu durumlarda kullanın: |
|---|---|---|
| Özel bir başlıkta | X-Api-Key: <token> veya seçtiğiniz başlık adı |
Varsayılan ayar ve çoğu entegrasyonun yaptığı şey |
| Taşıyıcı token olarak | Authorization: Bearer <token> |
Bu araçta bir “Bearer” veya “API-token” alanı bulunmaktadır |
| Kullanıcı adı ve şifre olarak | HTTP Basic: Seçtiğiniz bir kullanıcı adı ve şifre olarak jeton kullanılır | Bu araç yalnızca Temel kimlik doğrulama özelliğini sunmaktadır |
| URL'de | ?token=<token> veya seçtiğiniz parametre adı |
Gönderen yalnızca düz bir URL’ye erişebilir ve başlık ayarlayamaz |
Authorization, kasıtlı olarak ayrılmış bir özel başlık adı olarak kalır: Bearer ve Basic, bu başlığı kullanmanın desteklenen yöntemleridir ve her ikisi de sizin adınıza işlenir. Bu iki yöntemde verilen bir 401 yanıtı, bir WWW-Authenticate başlığını da içerir; çünkü bazı HTTP istemcileri, kimlik bilgilerini ancak kimlik doğrulama talebi aldıktan sonra gönderir.
URL seçeneği, bu dört seçenekten en zayıf olanıdır - URL’ler günlük dosyalarına, yönlendirme kaynaklarına ve tarayıcı geçmişine kaydedilir - bu nedenle, yalnızca gönderen size başka seçenek bırakmadığında bu seçeneği kullanın. Uygulama, jetonu içeren tamamlanmış URL’yi gösterir ve isteği kaydettiği her yerde bu parametreyi gizler.
HMAC SHA-256
Gönderen, paylaşılan bir gizli anahtar kullanarak istek üzerinde bir imza hesaplar; biz de bunu yeniden hesaplayıp karşılaştırırız. Sızdırılmış bir istek, içeriği değiştirilerek tekrar gönderilemez; çünkü istek gövdesi artık imzayla eşleşmez.
Sağlayıcı ön ayarları
İmza sağlayıcısı bölümünden sağlayıcınızı seçin; biz de o sağlayıcının tam şemasını (başlık adı, kodlama, neyin imzalandığı ve imzanın ne kadar süreyle geçerli kalacağı) kullanarak doğrulama yapacağız. Sağlayıcının kontrol panelinden imza anahtarını yapıştırın, hepsi bu kadar.
Her biri kendi kurulum kılavuzuna sahip 22 yerleşik sağlayıcı bulunmaktadır: Calendly, Customer.io, GitHub, Lemon Squeezy, Linear, Mollie, Paddle, Paystack, Razorpay, Sanity, Sendcloud, Sentry, Shopify, Slack, Square, Standart Webhook'lar (OpenAI, Supabase), Stripe, Svix (Clerk, Resend), Typeform, Vercel, WooCommerce ve Zendesk. Kullandığınız sağlayıcı listede yoksa, özel bir şema kullanarak nasıl oturum açıldığını açıklayın.
Tam liste, özel seçenek ve yerleşik imza doğrulama aracı hakkında bilgi için bkz. İmzalı webhook'ların doğrulanması.

Genel HMAC
Önceden tanımlanmış bir şema ya da özel bir şema olmadığından, kendi yöntemimizi kullanıyoruz: Çağrı yapan taraf, imza gizli anahtarını kullanarak X-Webhook-* başlık değerlerinin HMAC-SHA256 şifrelemesini içeren X-Signature başlığını gönderir.
curl -X POST https://your-app-url/webhook/ab12cd34 \
-H "Content-Type: application/json" \
-H "X-Webhook-Data: value1value2" \
-H "X-Signature: <hmac-sha256 of the X-Webhook-* values>" \
-d '{"data":"payload"}'Bir reddedilme nasıl görünür?
Kimlik doğrulama başarısız olduğunda, nedeni belirten bir JSON gövdesi ile birlikte 401 kodu döndürülür - tam kod listesi için bkz. Geçmiş ve sorun giderme. Reddedilen çağrılar, webhook'u düzenlerken Canlı İstek Denetleyicisi'nde hâlâ görünür; böylece bir çağrının neden geri döndüğünü tam olarak görebilirsiniz.
Kesintiye yol açmadan sırrı döndürmek
Bir gizli anahtarı tek adımda değiştirmek, gönderen bu değişikliğe uyum sağlayana kadar eski anahtarla imzalanmış tüm isteklerin başarısız olması anlamına gelir. Webhook üzerinden gizli anahtarı döndürmek bu sorunu önler: statik jeton ve her imza şeması için, ana anahtarın yanı sıra kabul edilen ikinci bir** geçerli gizli anahtar** barındırır.
- Yeni şifreyi İkinci geçerli şifre alanına girin ve kaydedin. Artık her ikisi de kabul ediliyor.
- Göndericiyi yeni gizli anahtara geçirin.
- Tanıt düğmesine basın; bu işlem, öğeyi ana alana taşır ve ikinci alanı temizler; ardından kaydedin.
Hiçbir istek hiçbir aşamada reddedilmez. İkinci gizli anahtar, ana gizli anahtarla tamamen aynı şekilde saklanır ve API tarafından asla geri döndürülmez; yalnızca ayarlanıp ayarlanmadığı bilgisi verilir.
Sırrı güvende tutmak
- REST API’miz veya MCP sunucumuz, hiçbir erişim düzeyinde bu jetonu asla geri vermez; bunlar Yalnızca bunlardan birinin ayarlanıp ayarlanmadığını bildirir. Bkz. Geliştirici API'si ve MCP.
- Depolandığı sırada şifrelenmiştir.
- Döndürme işlemi anında geçerli olur; bu nedenle, aşağıdakini kullanmak yerine yukarıdaki ikinci gizli akışı kullanın: ana alanı üzerine yazmak.
- Kaydedilen çağrı geçmişi, kimlik doğrulama başlığını, Temel kimlik bilgilerini ve URL belirtecini gizler, Yani, “Geçmiş” ekran görüntüsü gizli bilgilerinizi açığa çıkarmaz.
Daha da daraltmak
Kimlik doğrulama, arayanın gizli bilgiyi bildiğini kanıtlar. IP izin listeleri, aramanın nereden gelebileceğini sınırlar ve yukarıdaki modlardan herhangi biriyle birleştirilebilir.
