Verifisering av signerte webhooks

Verifisering av signerte webhooks

Kopier side

Verifiser HMAC-signerte webhooks før Shopify Flow kjøres. Velg blant 22 innebygde leverandører eller sett opp en tilpasset signatur for andre tjenester.

Mange tjenester signerer webhookene de sender, slik at mottakeren kan bekrefte at en forespørsel faktisk kom fra dem og ikke ble endret underveis. Hvis du angir HMAC som autentiseringsmetode for en webhook, sjekker appen denne signaturen før noe når Shopify Flow. En forespørsel som ikke består sjekken, avvises med 401, og arbeidsflyten utføres aldri.

Det er to måter å konfigurere dette på: Velg avsender fra listen, eller beskriv hvordan signaturen ser ut.

Innebygde leverandører

Velg leverandøren under Signaturleverandør og lim inn signeringsnøkkelen. Appen kontrollerer deretter at leverandøren følger sine egne spesifikasjoner - riktig overskrift, koding, signert innhold og replay-vindu - så det er ikke noe annet du trenger å konfigurere. Hver leverandør har sin egen veiledning for oppsett, fra opprettelse av endepunktet til å bygge opp Shopify Flow-arbeidsflyten.

Leverandør Installasjonsveiledning Omfatter også
Calendly Slik kobler du Calendly til Shopify Flow -
Customer.io Slik kobler du Customer.io til Shopify Flow -
GitHub Slik kobler du GitHub til Shopify Flow -
Lemon Squeezy Slik kobler du Lemon Squeezy til Shopify Flow -
Lineær Slik kobler du Linear til Shopify Flow -
Mollie Slik kobler du Mollie til Shopify Flow -
Padle Slik kobler du Paddle til Shopify Flow -
Paystack Slik kobler du Paystack til Shopify Flow -
Razorpay Slik kobler du Razorpay til Shopify Flow -
Forstand Slik kobler du Sanity til Shopify Flow -
Sendcloud Slik kobler du Sendcloud til Shopify Flow -
Sentry Slik kobler du Sentry til Shopify Flow -
Shopify Slik kobler du Shopify til Shopify Flow -
Slack Slik kobler du Slack til Shopify Flow -
Kvadrat Slik kobler du Square til Shopify Flow -
Standard webhooks Slik kobler du standard webhooks til Shopify Flow OpenAI, Supabase Auth Hooks
Stripe Slik kobler du Stripe til Shopify Flow -
Svix Slik kobler du Svix til Shopify Flow Kontorist, Send på nytt, Superwall
Typeform Slik kobler du Typeform til Shopify Flow -
Vercel Slik kobler du Vercel til Shopify Flow -
WooCommerce Slik kobler du WooCommerce til Shopify Flow -
Zendesk Slik kobler du Zendesk til Shopify Flow -

Hver veiledning angir nøyaktig hva appen sjekker for den aktuelle avsenderen, og hvor man finner signeringsnøkkelen.

En webhook med HMAC-autentisering og Stripe som signaturleverandør, som viser feltet for signeringsnøkkelen, hva dette kontrollerer og trinnene for å koble til Stripe
En signert avsender, her Stripe: Velg leverandør, lim inn signeringsnøkkelen, så viser redigeringsverktøyet hva som er merket av og hvordan du kobler det til.

Egendefinert signatur: enhver annen avsender

Hvis avsenderen din ikke står på listen, velger du Egendefinert signatur og beskriver hvordan den signerer. Dokumentasjonen fra leverandøren din vil inneholde en linje som for eksempel:

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

Den ene linjen gir svar på alle feltene:

Innstilling Fra eksemplet Hva det betyr
Signaturhode X-Acme-Signature Overskriften med signaturen
Algoritme hmac_sha256 SHA-256, SHA-1 eller SHA-512
Koding hex hex, base64 eller base64url
Signert nyttelast {timestamp}.{body} Den nøyaktige teksten som ble undertegnet
Tidsstempel en overskrift som for eksempel X-Acme-Timestamp Hvor timestamp-verdien havner
Toleranse for gjentakelse 300 sekunder Avvis forespørsler som er eldre enn dette

Den signerte nyttelasten

Skriv hva avsenderen signerer ved å bruke disse plassholderne:

Plassholder Blir
{body} Den ubehandlede forespørselsteksten, byte for byte. Obligatorisk.
{timestamp} Tidsstemplet fra overskriften eller signaturoverskriften
{url} URL-adressen til denne webhooken, slik du angav den hos avsenderen
{header:name} Verdien av en annen forespørselsheader

Vanlige formater: {body}, {timestamp}.{body}, {timestamp}{body}, v0:{timestamp}:{body}, {header:webhook-id}.{timestamp}.{body}. Bruk Start fra en leverandør for å kopiere et format som ligner, og endre bare det som er annerledes.

Hvor signaturen skal plasseres

  • Enkelt: Verdien i overskriften er signaturen, eventuelt etterfulgt av et prefiks du selv velger, for eksempel sha256= eller v1,.
  • Nøkkel = verdi: overskriften inneholder par som t=1700000000,v1=abc.... Angi navnet på nøkkelen som inneholder signaturen (v1), eventuelt navnet på nøkkelen som inneholder tidsstemplet (t), og om parene er atskilt med , eller ;.

Hvis en overskrift inneholder flere signaturer atskilt med mellomrom - noe enkelte avsendere gjør når man roterer en hemmelighet - godtas hvilken som helst av dem som stemmer overens.

Hemmeligheten

Vanligvis limer du inn nøkkelen slik avsenderen viser den. Noen avsendere oppgir en base64-kodet nøkkel med et prefiks, for eksempel whsec_...: Velg base64-kodet og skriv inn prefiks som skal fjernes.

Testing før oppstart

Signaturtesteren ligger under innstillingene og fungerer selv om endringene ikke er lagret.

  • Lim inn brødteksten og overskriftene fra en ekte forespørsel, og trykk på Verifiser. Du får se hvert trinn - overskrift funnet, signatur lest, tidsstempel innenfor området, nyttelast opprettet, signaturer sammenlignet - samt den eksakte teksten som ble signert. På denne måten viser en uoverensstemmelse deg nøyaktig hvor feilen oppstod, i stedet for bare en melding om «ugyldig signatur».
  • Funksjonen Generer et gyldig eksempel genererer korrekt signerte overskrifter og en curl-kommando som er klar til bruk, tilpasset dine nåværende innstillinger. Hvis denne forespørselen godtas, er konfigurasjonen din konsistent fra ende til ende.

Testeren starter aldri en arbeidsflyt, skriver ikke noe til historikken og teller ikke med i abonnementet ditt.

Signaturen stemmer ikke overens. Hva bør jeg sjekke?

I denne rekkefølgen: hemmeligheten (den vanligste årsaken, for eksempel et ekstra mellomrom eller feil nøkkel for miljøet), den signerte nyttelasten (en manglende . eller : mellom tidsstempel og hoveddel), kodingen (hex vs. base64) og om noe mellom avsenderen og appen har endret hoveddelen. Signaturene dekker de rå byteene, så en proxy som omformaterer JSON ødelegger dem.

Forespørsler mislykkes med feilmeldingen «tidsstempel utenfor toleranseområdet»

Avsenderens klokke er feilinnstilt, forespørselen ble forsinket eller sendt på nytt med en gammel tidsstempel, eller tidsstempel-enheten er feil. Sjekk om avsenderen bruker sekunder, millisekunder eller en ISO-dato.

Avsenderen min må først gjennomføre en bekreftelsesprosess

Noen tjenester (Zoom, Dropbox, Asana, Trello, Notion) sender en bekreftelsesforespørsel som endepunktet må svare på før de leverer hendelser - hver på sin måte. Av den grunn tilbys de ikke som «ett-klikk»-leverandører. Kontakt kundestøtte og oppgi navnet på avsenderen din hvis du trenger en av disse tjenestene.

Er signaturen lagret et sted?

Nei. Signaturhoder blir skjult i «Historikk» og i «Live Request Inspector», fordi en signatur kan gjentas innenfor toleransevinduet.