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

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

関数 編集

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

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

webhook通知の認証 編集

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

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

関連項目 編集

出典 編集

  1. ^ Web hook to revolutionize the web, (3 May 2007), オリジナルの2018-06-30時点におけるアーカイブ。, https://web.archive.org/web/20180630220036/http://progrium.com/blog/2007/05/03/web-hooks-to-revolutionize-the-web/ 
  2. ^ Webhooks”. Atlassian. 2019年9月24日閲覧。]
  3. ^ About Webhooks - Github Help
  4. ^ WordPress Webhooks
  5. ^ Jenkins GitHub Commit Hooks HOWTO, オリジナルの2015-09-25時点におけるアーカイブ。, https://web.archive.org/web/20150925064335/http://wiki.cloudbees.com/bin/view/DEV/GitHub+Commit+Hooks+HOWTO 
  6. ^ What are WebHooks and How Do They Enable a Real-time Web?
  7. ^ DocuSign Connect Now Includes Basic Authentication Support”. DocuSign. DocuSign, Inc.. 2020年1月15日閲覧。 “the Connect notification service has been updated to support the Basic Authentication scheme with customers’ Connect servers (listeners).”
  8. ^ Checking Webhook Signatures”. Stripe. Stripe, Inc. 2019年5月12日閲覧。
  9. ^ Getting Started - Graph API - Documentation - Facebook for Developers”. Facebook. Facebook, Inc.. 2019年5月12日閲覧。
  10. ^ Mutual TLS: Stuff you should know”. DocuSign. DocuSign, Inc.. 2020年1月15日閲覧。 “Mutual TLS plus Client Access Control enables your listener app to ensure that the Connect notification message was sent by DocuSign and that it wasn’t modified en route.”

外部リンク 編集