The challenge
Customers exchanged sensitive documents with the firm over email. The business needed a secure portal that would satisfy internal security reviews and its customers’ IT teams.
Our solution
We ran a threat-modelling workshop first, then built a Next.js portal and API with role-based access control, encrypted document storage and an append-only audit log of every sensitive action.
Staff sign in with Microsoft Entra ID SSO and MFA; customers use passwordless sign-in. Everything runs in Azure with private networking.
- Threat model and security requirements agreed up front
- Fine-grained RBAC enforced on the server
- Append-only audit log for sensitive operations
- Entra ID SSO for staff, passwordless sign-in for customers
Architecture
Identity
- Entra ID (staff)
- Passwordless (customers)
App
- Next.js portal
- API + RBAC
Security
- Audit log
- Key Vault
Data
- Azure SQL
- Encrypted Blob
Technology
- Next.js
- TypeScript
- Node.js
- Microsoft Entra ID
- Azure App Service
- Azure SQL
- Key Vault
- OWASP ASVS
Outcomes
- Sensitive document exchange moved off email
- Passed the client’s internal security review
- Clear audit trail for every access and change