设备指纹
使用控制台Webhooks

在服务端接收 Webhook

Webhooks: 在服务端接收 Webhook

请求头和鉴权

Webhook 请求会携带用于鉴权的 Bearer Token。你的服务端应:

  1. 从请求头读取 Authorization 信息。
  2. 提取 Bearer Token。
  3. 与服务端安全存储的 Token 比较。
  4. 校验失败时拒绝请求。
  5. 校验成功后再解析和处理 Payload。

不要只根据来源 IP 判断回调是否合法,也不要把 Token 记录到普通业务日志。

Payload

Payload 的完整字段和版本以 GEELAB 当前 Webhook Payload Reference 为准。你的服务端至少应能够识别:

  • 事件类型。
  • Request ID。
  • 应用和接入端信息。
  • 事件时间。
  • Device ID 或识别信息。
  • 风险信号(如果本次事件命中)。

收到 Request ID 后,可以根据业务需要调用服务端 API 获取更完整的事件信息。不要仅依赖客户端上报的内容做高风险决策。

事件类型

如果订阅“全部识别事件”,服务端应能够处理正常事件和高风险事件。如果订阅“仅高风险事件”,服务端仍应根据 Payload 中的事件类型和风险信号进行校验,不要假设每条回调都包含同样的字段。

版本兼容

处理 Payload 时建议:

  • 使用事件类型和字段名判断,而不是依赖字段顺序。
  • 对新增字段保持兼容,忽略暂时不需要的未知字段。
  • 对缺失的可选字段进行容错。
  • 保存 Payload 版本或请求头中的版本信息(如果提供)。
  • 关注 GEELAB 的更新说明,在升级前进行测试。

不要把完整 Payload 结构硬编码成无法演进的严格字符串匹配。

投递语义

当前版本的 Webhook 采用异步、单次投递模型:平台对每条事件只发起一次 HTTP 请求,不会因为目标服务返回错误或超时而自动重试。你的接收服务应自行做好幂等处理,并通过投递日志确认最终结果。

不同事件可能并行发送,因此不保证严格按事件发生时间到达。处理有先后依赖的业务时,请结合事件时间、业务状态和 Request ID 判断是否可以执行,不要仅依赖到达顺序。

图示:Webhook 请求与事件信息