Webhook是改变或者扩展Web应用程序功能的自定义回调API。这些回调可能由第三方用户和开发人员维护、修改和管理,这些用户和开发人员不一定隶属于原始网站或应用程序。“webhook”一词是 Jeff Lindsay 在 2007 年从计算机编程术语hook中创造出来的。格式通常是JSON,该请求是作为HTTP POST请求完成的。
功能
Webhook 是“用户定义的 HTTP 回调”。它们通常由某些事件触发,例如将代码推送到代码仓库或发布到博客的评论。当该事件发生时,源站点向为 webhook 配置的 URL 发出 HTTP 请求,从而导致一个站点上的事件调用另一个站点上的行为。
常见用途是使用持续集成系统触发构建或通知错误跟踪系统。因为 webhooks 使用 HTTP,所以它们可以集成到 web 服务中,而无需添加新的基础设施。
认证 webhook 通知
当客户端(原始网站或应用程序)对第三方用户的服务器进行 webhook 调用时,传入的 POST 请求应进行身份认证以避免欺骗。可以使用不同的技术来认证客户端:
- 接收端点可以选择保留一个已知来源的IP 地址列表,这些来源的请求将被接受。
- HTTP Basic Authentication可以用于对客户端进行身份认证。
- webhook 可以包含有关它是什么类型的事件的信息,以及用于验证 webhook 的 密钥或签名。
- 一个HMAC签名可以被包含在HTTP header中。
- 也可以使用SHA-1签署他们的请求。
- 建立连接时可以使用TLS 身份认证。然后服务器可以验证客户端的证书。