DentSignal repair · Webhook trust

Retries needed identity. Callbacks needed one purpose.

The repair gave every incoming event a stable identity and separated delayed callback trust from immediate socket admission.

Status
Historical change record
Area
FastAPI, HMAC, idempotency
Boundary
No keys or payloads published
Webhook trust workflow showing a provider event, signature verification, stable event identity, duplicate rejection, and a separate route-scoped callback token
Event identity prevents repeated work. A separate scoped token decides whether a callback is allowed.

What broke

Missing IDs weakened retry checks.

Some events arrived without provider IDs, while one short token lifetime was stretched across immediate WebSocket admission and delayed callbacks.

What changed

Identity and authorization became separate contracts.

Missing IDs receive a stable fallback fingerprint. Callback tokens bind to one route, one resource, and a purpose-specific lifetime.

What it fixed

Retries are recognizable without widening trust.

Stable event identity supports deduplication while delayed callbacks no longer reuse the short-lived socket-admission token.

Before / after

Name each event. Limit each key.

Broken
process(payload)
reuse(socket_token)
Fixed
event_key = provider_event_id or fingerprint(payload)
dedupe(event_key)
callback_token = issue_token(
    scope="callback", resource=call_id)

Evidence

Event identity and callback authority were verified separately.

The historical repair record shows stable fallback identity for missing provider IDs and purpose-scoped callback tokens with distinct lifetimes. Static checks and secret/external-service guards supported the change, but the page does not turn old test counts into a current security claim.

Stack and capabilities

Retry-safe identity and purpose-scoped authorization.

Next

See another repair or bring a callback boundary.

Back to projectsContact Niyam