Weryfikacja podpisanych webhooków

Weryfikacja podpisanych webhooków

Skopiuj stronę

Workflow Webhooks weryfikuje podpis HMAC webhooka przed uruchomieniem Shopify Flow: 22 wbudowanych dostawców lub własny podpis dla dowolnej usługi.

Wiele usług podpisuje wysyłane przez siebie webhooki, dzięki czemu odbiorca może potwierdzić, że żądanie rzeczywiście pochodziło od nich i nie zostało zmienione w trakcie przesyłania. Proszę ustawić uwierzytelnianie webhooka na HMAC, a aplikacja sprawdzi ten podpis, zanim jakakolwiek informacja dotrze do Shopify Flow. Żądanie, które nie przejdzie tej weryfikacji, zostanie odrzucone z kodem 401 i nigdy nie uruchomi przepływu pracy.

Istnieją dwa sposoby skonfigurowania tej funkcji: można wybrać nadawcę z listy lub opisać sposób, w jaki się on podpisuje.

Wbudowane dostawcy

Wybierz dostawcę w sekcji** Dostawca podpisu** i wklej jego klucz tajny do podpisywania. Aplikacja zweryfikuje następnie zgodność z wytycznymi dostawcy - właściwy nagłówek, kodowanie, podpisaną treść oraz okno odtwarzania - więc nie ma potrzeby konfigurowania niczego więcej. Każdy dostawca posiada własny przewodnik konfiguracji, obejmujący zarówno tworzenie punktu końcowego, jak i budowanie przepływu pracy w Shopify Flow.

Dostawca Instrukcja konfiguracji Obejmuje również
Calendly Jak połączyć Calendly zShopify Flow -
Customer.io Jak połączyć Customer.io z Shopify Flow -
GitHub Jak połączyć serwis GitHub z platformą Shopify Flow -
Wyciskacz do cytryn Jak połączyć Lemon Squeezy zShopify Flow -
Liniowy Jak połączyć Linear zShopify Flow -
Mollie Jak połączyć Mollie zShopify Flow -
Wiosło Jak połączyć Paddle zShopify Flow -
Paystack Jak połączyć Paystack zShopify Flow -
Razorpay Jak podłączyć Razorpay do serwisu Shopify Flow -
Rozsądek Jak połączyć Sanity zShopify Flow -
Sendcloud Jak połączyć Sendcloud zShopify Flow -
Sentry Jak połączyć Sentry zShopify Flow -
Shopify Jak połączyć Shopify z Shopify Flow -
Slack Jak połączyć Slack zShopify Flow -
Kwadrat Jak połączyć Square zShopify Flow -
Standardowe webhooki Jak podłączyć standardowe webhooki do serwisu Shopify Flow OpenAI, haki uwierzytelniające Supabase
Pasek Jak połączyć Stripe zShopify Flow -
Svix Jak połączyć Svix zShopify Flow Urzędnik, Ponowne wysłanie, Superwall
Typeform Jak połączyć Typeform zShopify Flow -
Vercel Jak połączyć Vercel z Shopify Flow -
WooCommerce Jak połączyć WooCommerce z Shopify Flow -
Zendesk Jak połączyć Zendesk zShopify Flow -

W każdym przewodniku podano dokładnie, jakie elementy aplikacja sprawdza w przypadku danego nadawcy oraz gdzie można znaleźć jego klucz podpisujący.

Webhook z uwierzytelnianiem HMAC i usługą Stripe jako dostawcą podpisu, przedstawiający pole „secret podpisu”, opis tego, co jest sprawdzane, oraz kroki konfiguracji usługi Connect Stripe
Podpisujący nadawca, w tym przypadku Stripe: proszę wybrać dostawcę, wkleić jego klucz podpisujący, a edytor wyświetli, co jest zaznaczone i jak to połączyć.

Indywidualny podpis: dowolny inny nadawca

Jeśli nadawca nie znajduje się na liście, proszę wybrać opcję Podpis niestandardowy i opisać sposób podpisywania. Dokumentacja Państwa dostawcy będzie zawierała następujący wpis:

X-Acme-Signature = hex(hmac_sha256(secret, timestamp + "." + body))

Ten jeden wiersz odpowiada na wszystkie pola:

Miejsce akcji Na podstawie przykładu Co to oznacza
Nagłówek podpisu X-Acme-Signature Nagłówek zawierający podpis
Algorytm hmac_sha256 SHA-256, SHA-1 lub SHA-512
Kodowanie hex hex, base64 lub base64url
Podpisany ładunek {timestamp}.{body} Dokładna treść podpisanego dokumentu
Sygnatura czasowa nagłówek, taki jak X-Acme-Timestamp Gdzie trafia wartość timestamp
Tolerancja powtórki 300 sekund Proszę odrzucać wnioski starsze niż ten

Podpisany ładunek

Proszę wpisać treść podpisu nadawcy, korzystając z poniższych symboli zastępczych:

Znak zastępczy Staje się
{body} Nieprzetworzona treść żądania, bajt po bajcie. Wymagane.
{timestamp} Sygnatura czasowa z nagłówka lub nagłówka podpisu
{url} Adres URL tego webhooka, zgodnie z tym, jaki podał Pan/Pani jako nadawca
{header:name} Wartość kolejnego nagłówka żądania

Typowe formaty: {body}, {timestamp}.{body}, {timestamp}{body}, v0:{timestamp}:{body}, {header:webhook-id}.{timestamp}.{body}. Proszę skorzystać z** opcji Rozpocznij od dostawcy**, aby skopiować format zbliżony do potrzebnego i zmienić jedynie te elementy, które się różnią.

Miejsce umieszczenia podpisu

  • Zwykły: wartością nagłówka jest sygnatura, opcjonalnie poprzedzona wybranym przez Państwa prefiksem, takim jak sha256= lub v1,.
  • Klucz = wartość: nagłówek zawiera pary w postaci t=1700000000,v1=abc.... Proszę podać nazwę klucza zawierającego podpis (v1), opcjonalnie nazwę klucza zawierającego sygnaturę czasową (t) oraz określić, czy pary są oddzielone znakiem , czy ;.

Jeśli nagłówek zawiera kilka podpisów oddzielonych spacjami - co zdarza się w przypadku niektórych nadawców podczas zmiany klucza - akceptowany jest każdy z nich, który jest zgodny.

Sekret

Zazwyczaj należy wkleić klucz tajny w takiej postaci, w jakiej przedstawia go nadawca. Niektórzy nadawcy podają klucz zakodowany w formacie Base64 z prefiksem, np. whsec_...: proszę wybrać opcję zakodowany w formacie Base64 i wprowadzić prefiks, który ma zostać usunięty.

Testowanie przed uruchomieniem serwisu

Narzędzie do sprawdzania podpisu znajduje się poniżej ustawień i działa w przypadku niezapisanych zmian.

  • Wklej treść i nagłówki rzeczywistego żądania, a następnie naciśnij przycisk Zweryfikuj. Otrzymają Państwo informacje o każdym etapie - znaleziono nagłówek, odczytano podpis, sygnatura czasowa mieści się w zakresie, zbudowano ładunek, porównano podpisy - oraz dokładny tekst, który został podpisany, dzięki czemu w przypadku niezgodności będą Państwo wiedzieć, gdzie wystąpił błąd, a nie otrzymają jedynie informację „nieprawidłowy podpis”.
  • Funkcja Generuj poprawny przykład generuje poprawnie podpisane nagłówki oraz gotowe do uruchomienia polecenie curl, dostosowane do Państwa aktualnych ustawień. Jeśli żądanie to zostanie zaakceptowane, oznacza to, że Państwa konfiguracja jest spójna na całej długości łańcucha.

Tester nigdy nie uruchamia przepływu pracy, nie zapisuje żadnych danych w historii i nie jest wliczany do Państwa planu.

Podpis nie jest zgodny. Co powinienem sprawdzić?

W następującej kolejności: sekret (najczęstsza przyczyna, w tym dodatkowa spacja lub nieprawidłowy klucz środowiska), podpisany ładunek (brakujący znak . lub : między sygnaturą czasową a treścią), kodowanie (hex vs base64) oraz to, czy coś pomiędzy nadawcą a aplikacją spowodowało zmianę treści. Podpisy obejmują surowe bajty, więc serwer proxy, który zmienia format danych JSON, powoduje ich uszkodzenie.

Żądania kończą się niepowodzeniem z komunikatem „znacznik czasu wykracza poza dopuszczalny zakres”

Zegar nadawcy jest niedokładny, żądanie zostało opóźnione lub ponowione z użyciem nieaktualnego znacznika czasu albo jednostka znacznika czasu jest nieprawidłowa. Proszę sprawdzić, czy nadawca stosuje sekundy, milisekundy czy datę w formacie ISO.

Mój nadawca musi najpierw przeprowadzić procedurę weryfikacyjną

Niektóre serwisy (Zoom, Dropbox, Asana, Trello, Notion) wysyłają żądanie weryfikacyjne, na które punkt końcowy musi odpowiedzieć przed dostarczeniem jakichkolwiek zdarzeń; każdy z nich robi to na swój sposób. Z tego powodu nie są one oferowane jako dostawcy obsługujący funkcję „jednym kliknięciem”. Jeśli potrzebują Państwo jednego z nich, prosimy o kontakt z działem pomocy technicznej, podając nazwę nadawcy.

Czy podpis jest gdzieś zapisany?

Nie. Nagłówki podpisów są maskowane w oknie „Historia” oraz w narzędziu „Live Request Inspector”, ponieważ podpis może zostać odtworzony w ramach okna tolerancji.