Sichere Webhooks
Sobald dein Server bereit ist, Webhook-Anfragen zu empfangen, möchtest du sicherstellen, dass er die Anfragen sicher verarbeiten kann. Logto generiert eine Signatur für jede Webhook-Anfrage-Payload, die es dir ermöglicht zu überprüfen, dass die Anfrage von Logto stammt.
Erhalte den Signierschlüssel
Du musst den Signierschlüssel von der Webhook-Detailseite in der Admin-Konsole abrufen, um die Signatur zu überprüfen.
Überprüfe die Signatur
Extrahiere die Signatur aus dem logto-signature-sha-256
Header der Webhook-Anfrage.
Danach solltest du eine Signatur mit deinem Signierschlüssel und dem Webhook-Anfragekörper generieren und sicherstellen, dass das Ergebnis mit der Signatur von Logto übereinstimmt.
Verwende den rohen Körper der Webhook-Anfrage für die Signaturerstellung; vermeide die Verwendung des geparsten Körpers, da Server ihn möglicherweise vorverarbeiten, bevor er deinen Webhook-Endpunkt-Handler erreicht.
Logto verwendet einen HMAC-Hex-Digest, um die Signatur zu berechnen.
Hier ist ein Beispiel, wie man die Signatur in Node.js überprüft:
import { createHmac } from 'node:crypto';
export const verify = (signingKey: string, rawBody: Buffer[], expectedSignature: string) => {
const hmac = createHmac('sha256', signingKey);
hmac.update(rawBody);
const signature = hmac.digest('hex');
return signature === expectedSignature;
};