Webhook を安全にする
サーバーが Webhook リクエストを受信する準備が整ったら、そのリクエストを安全に処理できるようにすることをお勧めします。Logto は各 Webhook リクエストペイロードに署名を生成し、リクエストが Logto からのものであることを確認できます。
署名キーを取得する
署名を確認するには、 Logto Console > Webhooks の Webhook 詳細ページから署名キーを取得する必要があります。
署名を確認する
Webhook リクエストの logto-signature-sha-256
ヘッダーから署名を抽出します。
その後、署名キーと Webhook リクエストボディを使用して署名を生成し、その結果が Logto からの署名と一致することを確認する必要があります。
注記:
署名生成には Webhook リクエストの生のボディを使用してください。解析されたボディを使用しないでください。サーバーが Webhook エンドポイントハンドラーに到達する前に前処理する可能性があります。
Logto は HMAC 16 進ダイジェストを使用して署名を計算します。
Node.js で署名を確認する方法の例を以下に示します:
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;
};