Skip to content

feat(webhooknotify): add configurable API key authentication - #369

Merged
InfinityPacer merged 1 commit into
mainfrom
codex/feat/webhook-notify-api-key
Aug 9, 2026
Merged

feat(webhooknotify): add configurable API key authentication#369
InfinityPacer merged 1 commit into
mainfrom
codex/feat/webhook-notify-api-key

Conversation

@InfinityPacer

Copy link
Copy Markdown
Owner

问题与背景

Webhook消息推送原先要求外部监控系统持有 MoviePilot 公共 API_TOKEN。公共凭据分发到多个外部系统后,泄露或轮换会影响其他 API 集成,需要为 Webhook 提供可独立管理的认证凭据。

原因分析

插件此前固定使用公共 Token 依赖,并使用 token 查询参数。插件路由注册器本身已经支持通过 X-API-KEY 请求头或 apikey 查询参数校验公共 API_TOKEN,但插件没有根据自身配置切换认证目标。

解决方案

  • 新增可选的 APIKEY 配置,使用密码输入框展示。
  • 未配置 APIKEY 时保持主程序默认认证,校验 MoviePilot 公共 API_TOKEN。
  • 配置 APIKEY 后关闭路由默认认证,改由插件使用常量时间比较校验该 Key。
  • 两种模式都使用 X-API-KEYapikey 传递凭据,调用方无需切换字段名称。
  • GET 和 POST 共用相同认证策略,日志不记录凭据或消息内容。

影响与风险

版本由 1.0 升级为 1.1,版本事实已同步到插件类、package.v2.json 和插件 README。现有用户不配置 APIKEY 时继续使用公共 API_TOKEN,但请求字段由旧版 token 调整为 X-API-KEYapikey;建议优先使用请求头,避免凭据进入 URL 日志。无需配置或数据迁移。

验证

  • WebhookNotify 局部测试:20 passed
  • 插件仓全量测试:2229 passed
  • .githooks/pre-push
  • python -m json.tool package.v2.json
  • python -m compileall -q plugins.v2/webhooknotify
  • git diff --check
  • 运行态验证了两种认证模式的缺失、错误、公共及插件凭据边界,以及 GET/POST 通知投递和通知历史记录

发布

  • 版本:WebhookNotify v1.1
  • 更新说明:新增 APIKEY 认证配置。

@InfinityPacer
InfinityPacer merged commit f57588e into main Aug 9, 2026
3 checks passed
@InfinityPacer
InfinityPacer deleted the codex/feat/webhook-notify-api-key branch August 9, 2026 17:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant