Skip to content

Security & Auth Overview

Security in Monozu Cloud is implemented at multiple layers: JWT-based authentication, role-based access control (RBAC), per-tenant data isolation via database Row-Level Security, and optional Microsoft Entra ID SSO.

MechanismUsed byDescription
Email + passwordCloud SPA usersbcrypt-hashed passwords, optional TOTP MFA
Microsoft Entra ID (OIDC)Cloud SPA, Management SPAPer-tenant app registration or platform-level SSO
JWT access tokenAll API callsShort-lived (default 60 min), carried in Authorization: Bearer
HttpOnly refresh cookieBrowser ↔ Cloud APILong-lived (default 7 days), used to silently reissue access tokens
Provisioning keyEdge devicesPer-tenant key created in Settings → Edge registration keys
X-Device-KeyEdge → IngestorDevice-specific key assigned at registration
X-Internal-TokenCloud ↔ Management M2MShared secret, set in both Key Vaults
HMAC-SHA256Management → Cloud webhookSigned with CLOUD_WEBHOOK_HMAC_SECRET

The Cloud Backend supports two auth policy modes set via AUTH_POLICY:

ModeBehavior
standard (default)Email/password login + optional Entra ID SSO
restrictedEntra ID SSO only. Blocks /auth/login, /auth/register, /auth/check-method. User email must match AUTH_ALLOWED_EMAIL_DOMAINS.

All Cloud Backend data is isolated per tenant using Azure SQL Row-Level Security. See Multi-Tenancy for the implementation details.

graph TD
    Request["Incoming request"] --> JWT["JWT middleware<br>validate + extract tenant_id, user_id"]
    JWT --> RBAC["RBAC middleware<br>check required permission"]
    RBAC --> Handler["Domain handler"]
    Handler --> RLS["Azure SQL RLS<br>SESSION_CONTEXT tenant_id enforced"]
    RLS --> Data["Tenant-scoped data"]
ConcernLocation
Auth domain handlersBackend/internal/domain/auth/
Auth middleware (JWT validation)Backend/internal/middleware/auth.go
RBAC middlewareBackend/internal/middleware/rbac.go
Permission catalogBackend/internal/rbac/catalog.go
Row-Level Security setupBackend/docs/deployment/row-level-security.md
Frontend auth routesFrontend/src/routes/auth/
Frontend auth storeFrontend/lib/stores/authStore.ts
Session restore (hydration)Frontend/src/components/SessionRestore.tsx
  • JWT Flow — access and refresh token lifecycle
  • RBAC — permission groups and catalog
  • SSO & Entra ID — OIDC integration details