# How-toガイド - Webhookイベントのセキュリティ確保
Webhook署名の検証は、悪意のあるアクターがイベントのなりすましを行ったり、改ざんされたWebhookを拒否することを防ぐための推奨される方法です。通常、Webhookイベントから署名を作成し、Webhookのヘッダー内の署名と照合する多くの既知の署名検証手法があります。このガイドでは、HubSpotのWebhook V1署名 (opens new window)を使用した簡単な例を紹介します。
TIP
このガイドでは、静的または動的なWebhookトリガーの作成の基礎を知っていることを前提としています。まだそうでない場合は、それらのガイドを確認してください。
# サンプルコネクタ - HubSpot Webhooks
webhook_payload_type: "raw", # Workatoは受信Webhookに対してJSON.parseを実行しますが、生のペイロードを基に署名を計算する必要があります
webhook_notification: lambda do |input, payload, extended_input_schema, extended_output_schema, headers, params, connection, webhook_subscribe_output|
original_payload = payload
client_secret = connection['client_secret']
if client_secret.present?
source_string = client_secret + original_payload # クライアントシークレット+ペイロードの連結でSHA256の文字列を構築します
v1_signature = source_string.encode_sha256.encode_hex
end
# 以下の条件式は、計算した署名がWebhookイベントのX-Hubspot-Signatureと一致することを検証します
if (client_secret.present? && v1_signature == headers['X-Hubspot-Signature'])
# ペイロードをJSONとして解析することを忘れないでください(ペイロードは`raw`であると指定しました)
{
events: workato.parse_json(payload),
headers: headers,
webhook_validated: client_secret.present? ? true : false
}
end
end,
コミュニティで完全なコネクタを見る。 (opens new window)
# ステップ1 - 必要に応じてwebhook_payload_typeをrawに設定する
WorkatoのWebhookゲートウェイは常に受信ペイロードをJSONとして解析しようとします。一部の場合では、これによりペイロードの詳細が失われ、誤った署名が作成される可能性があります。これを避けるために、webhook_payload_type
キーを使用して、Workatoにwebhook_notification
ラムダに生のペイロードを提供するように指示することができます。
# ステップ2 - Webhook署名の計算
Webhookの真正性を検証するために、受信Webhookイベントから独自のWebhook署名を計算することも重要な部分です。これは、暗号化アルゴリズム(SHA256やHMACアルゴリズムなど)を使用して、ペイロードとあなたとWebhookプロバイダーのみが知っている秘密のキーを使用して行われることが一般的です。
original_payload = payload
client_secret = connection['client_secret']
if client_secret.present?
source_string = client_secret + original_payload # クライアントシークレット+ペイロードの連結でSHA256の文字列を構築します
v1_signature = source_string.encode_sha256.encode_hex
end
HubSpotの場合、ペイロードとクライアントシークレットから暗号化するキーを作成し、それをSHA256で暗号化します。
# ステップ3 - 生成された署名とWebhookイベントで提供された署名の比較
次のステップは、ステップ2で生成した署名とWebhookイベント内に存在する署名とを比較することです。通常、これはwebhook_notification
ラムダでアクセスできるWebhookイベントのヘッダーに含まれています。
# 以下の条件式は、計算した署名がWebhookイベントのX-Hubspot-Signatureと一致することを検証します
if (client_secret.present? && v1_signature == headers['X-Hubspot-Signature'])
# ペイロードをJSONとして解析することを忘れないでください(ペイロードは`raw`であると指定しました)
{
events: workato.parse_json(payload),
headers: headers,
webhook_validated: client_secret.present? ? true : false
}
end
Last updated: 2024/2/13 16:59:53