|
System-to-System (#28): подписанные доставки в системные webhooks
- app/signature.py: HMAC-подпись/проверка — зеркало WebhookSignature.php
gnexus-auth ("t=<unix>,v1=hmac_sha256('<t>.<body>', secret)"); verify —
константное сравнение + окно свежести 300 с (replay). Пригодится и для
входящих вебхуков gnexus-auth (single sign-out).
- app/worker/senders.py: POST в endpoint цели s2s с заголовками
X-Gnexus-Event-Id/Type/Timestamp/Signature + X-Synapse-Source; секрет
per-target (token_ref → S2S_SECRET_*), в БД только ссылка; 2xx = успех.
- tasks.py: первая попытка отправки сразу на маршрутизации (не ждать
beat-цикла), провал — общий ретрай-цикл; _attempt_send теперь одна.
- docs/05: отправка/ретраи/референс-код для принимающих сервисов;
.env.example: S2S_SECRET_*; README: структура, опечатка.
Проверено на живом стеке с приёмником-верификатором: OK (подпись/свежесть/
заголовки/тело), и цель без секрета — честная ошибка с именем переменной.
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
|---|
|
|
| .env.example |
|---|
| README.md |
|---|
| app/signature.py 0 → 100644 |
|---|
| app/worker/senders.py 0 → 100644 |
|---|
| app/worker/tasks.py |
|---|
| docs/05-ingestion-api.md |
|---|