Webhook

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

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

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

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

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

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

 関連項目 
 アプリケーションプログラミングインタフェース (API)

 マッシュアップ（Webアプリケーションハイブリッド）

 出典 

 外部リンク 
 Working with Webhooks

Category:HTTP
Category:ウェブ技術