Skip to content

Authenticate the Membership Hub's status-callback endpoint - #16

Merged
paullatzelsperger merged 1 commit into
mainfrom
feat/authenticated-status-callbacks
Aug 21, 2026
Merged

Authenticate the Membership Hub's status-callback endpoint#16
paullatzelsperger merged 1 commit into
mainfrom
feat/authenticated-status-callbacks

Conversation

@paullatzelsperger

@paullatzelsperger paullatzelsperger commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

Closes the open leg of the CX-0006 callback contract with OAuth2 client credentials on the existing OSP IdP (Ory Hydra):

  • The hub registers its callback with authUrl/clientId/clientSecret (new seeded Hydra client membership-hub-callback) and validates the resulting bearer on /api/callbacks/** as a JWT resource server.
  • The Onboarding API now honors registered credentials: client-credentials token from the registered authUrl, sent as the bearer on every status callback — a failed token fetch drops the update instead of ever calling anonymously.
  • Registrations without an authUrl keep working plain (e2e OSP contract test unaffected); install/redeploy scripts carry the hub's host-derived issuer-uri.

…ials)

Closes the open leg of the CX-0006 callback contract. The Membership Hub
registers its callback WITH authUrl/clientId/clientSecret (a second Hydra
client, membership-hub-callback, seeded via the umbrella's ospIdp.clients);
the Onboarding API now honors registered credentials — it fetches a
client_credentials token from the registered authUrl and sends it as the
bearer on every status callback, and DROPS the update if the token fetch
fails rather than ever calling anonymously. The hub's /api/callbacks/** is
a JWT resource server against the OSP IdP (in-cluster JWKS, external
issuer-uri — host-derived in the install/redeploy scripts). Registrations
without an authUrl keep working plain, so the e2e OSP contract test is
unaffected.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017nfecB3UB91xPzX2r1fGA8
@paullatzelsperger
paullatzelsperger merged commit 9e83fd5 into main Aug 21, 2026
2 checks passed
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.

2 participants