Zoho Sign では、Webhook のセキュリティを確保するために HMAC-SHA 256(SHA 256 を用いたハッシュベースメッセージ認証コード)を使用するオプションを提供しています。これは Webhook の真正性と完全性を保証するための業界標準のハッシュ方式です。Webhook を HMAC で保護すると、次の点を検証できます。
- Webhook リクエストが Zoho Sign から送信されたものかどうか(シークレットキーは Zoho Sign と受信アプリケーションのみが知っている必要があります)。
- Webhook のコンテンツが途中で改ざんされていないかどうか(完全性)。
Zoho Sign における Webhook セキュリティの仕組み
Zoho Sign から Webhook が送信されると、HMAC 署名が X-ZS-Webhook-署名 という名前でリクエストヘッダーに含まれます。Webhook リクエストを受信したアプリケーションは、同じシークレットキーを使用して HMAC 署名を生成し、リクエストヘッダーに含まれる値と比較します。値が一致すればデータは正当であり、一致しない場合はデータが改ざんされています。
HMAC 署名の生成
Zoho Sign は、Webhook ペイロードの内容に対して HMAC-SHA256 アルゴリズムを使用して署名を計算し、その結果を base64 形式にエンコードしてリクエストヘッダーに送信します。以下はサンプルデータを用いた説明です。
|
ペイロードの内容
|
{{'requests':{'request_name':'テスト 名前'},'通知':{'operation_type':'RequestSigningSuccess'}}
|
|
secret_key
|
thisisthesamplekeyfortestingpurposes
|
|
base64encode(HMAC SHA-256(ペイロードの内容+secret_key))
|
drbSrM4H816RYKpZiRBLddUa0yHaTrwjtY04sIZFZus=
|
この Webhook リクエストヘッダー(HMAC ヘッダー)がどのように表示されるかを示す画像は次のとおりです。