Webhook

webhook（ウェブフック）は、web開発でカスタムのコールバックを用いてウェブページやウェブアプリケーションの動作を追加または変更するための方法である。このコールバックは、元のウェブサイトやアプリケーションはサードパーティのユーザーや開発者がメンテナンス、修正、管理できる場合がある。「webhook」という用語は、コンピュータプログラミングの用語hookから、2007年にJeff Lindsayによって作られた。

フォーマットには、通常JSONが利用される。リクエストは、リクエストとして行われる。

関数 
webhookは「ユーザー定義のHTTPコールバック」である。通常、コードをリポジトリにプッシュしたときや、コメントがブログに投稿されたときなどのイベントによってトリガーされる。イベントが発生すると、ソースサイトはwebhook用に設定されたURLにHTTPリクエストを送信する。ユーザーは、あるサイトのイベントによって、別のサイトの動作を呼び出すように設定できる。

一般的な用途には、継続的インテグレーションシステムでビルドをトリガーする、バグトラッキングシステムに通知するなどがある。webhookはHTTPを使用するため、新しいインフラストラクチャを追加せずにWebサービスに統合することができる。

webhook通知の認証 
クライアント（発信元のWebサイトまたはアプリケーション）がサードパーティユーザーのサーバーにwebhook呼び出しを行う場合、スプーフィング攻撃を回避するために、受信したPOSTリクエストを認証する必要がある。クライアントを認証するためには、次にようなさまざまな手法がある。

 受信エンドポイントが、要求を許可する既知のソースのIPアドレスのリストを保持する。
 HTTPのBasic認証を使用して、クライアントを認証する。
 Webhookに、イベントの種類に関する情報、Webhookを検証するためのシークレットまたは署名を含める。
 HMAC署名をHTTPヘッダーに含める。 GitHubとStripeはこの方法を利用している。
 SHA-1を使用してリクエストに署名する。Facebookはこの方法を利用している。
 接続が確立されたときにを使用する。エンドポイント（サーバー）はクライアントの証明書を検証できる。

関連項目 
 API
 
 マッシュアップ（Webアプリケーションハイブリッド）

出典

外部リンク 
 Working with Webhooks

Hypertext Transfer Protocol
ウェブ技術