Skip to main content

EP-MEL-17 — Identity, Auth, Multi-Tenant RBAC, MFA, SSO, Device Binding

Companion: Backlog README · EPICS.md · canonical: 07-epics-and-user-stories.md §19

Summary

WaveR1 (+ chain SSO in R2)
PriorityP0
Primary owneriam-service
Participating servicestenant-service, staff-service, bff-backoffice-service, notification-service
Journeys realisedJ-13 (Onboard tenant), J-14 (Onboard chain)
WorkflowsWF-12
Frontend surfacesAll authenticated surfaces
Story count7

Outcome

Identity is centrally managed: JWT issuance with key rotation; multi-tenant RBAC with role-per-membership; MFA via TOTP + WebAuthn passkeys; OIDC/SAML SSO for chain operators; device binding for desktop offline sessions; password reset & recovery; immutable audit log of authn events.

Cross-cutting AC for this epic

  • All authn events (login.success, login.failure, mfa.challenge, password.reset, device.bound) emit to audit-service.
  • JWT keys rotated via Secret Manager + KMS; client refresh transparent.
  • Tenant scope enforced both at JWT (tid claim) and RLS layer; cross-checked.
  • Device binding uses hardware-backed key where available; falls back to OS keystore.

Stories

IDTitle
US-MEL-0126JWT issuance & rotation
US-MEL-0127RBAC with tenant scope
US-MEL-0128MFA with TOTP and WebAuthn passkeys
US-MEL-0129OIDC/SAML SSO for chain operators
US-MEL-0130Device binding for desktop offline sessions
US-MEL-0131Password reset & recovery
US-MEL-0132Audit log of authn events

Full AC in ../07-epics-and-user-stories.md §19.

Implementation status (monorepo)

See IMPLEMENTATION_STATUS.mdUS-MEL-0126 (JWT issuance & rotation) is In progress as of 2026-04-23 (signing + JWKS + sessions schema; login/refresh/logout still open). US-MEL-0127–0132 are not started in code.

Cross-references