Cascade Water Services needed a secure, scalable authentication system for their operations platform. Multiple teams across different service regions needed isolated access to shared infrastructure, with strict data separation and role-based permissions.
Their existing setup had no multi-tenancy, no session hardening, and basic password-only auth. It wasn't built for a growing team operating across multiple sites.
What I Built
Custom Authentication System
OAuth 2.0 integration alongside custom auth flows
JWT-based session management with refresh token rotation
Session hardening: rate limiting, IP binding, token expiry policies, and brute-force protection
Secure password hashing with bcrypt and salt rounds
Multi-Tenant Architecture
Tenant-isolated data layer in PostgreSQL with row-level security policies
Tenant-aware middleware that routes requests to the correct data scope automatically
Role-based access control (RBAC) per tenant: admin, manager, field operator roles with granular permissions
Tenant onboarding flow with automated provisioning
Infrastructure & Caching
Redis for session caching, rate limiting counters, and token blacklisting
AWS deployment with environment isolation per tenant
Audit logging on every auth event: login, logout, failed attempts, permission changes
Results
Zero unauthorized access incidents since deployment
Sub-100ms auth response times with Redis session caching
Clean tenant isolation supporting multiple service regions on a single codebase
Reduced onboarding time for new regional teams from days to hours
Built a custom OAuth + JWT authentication system and multi-tenant architecture for industrial operations platform. Includes session hardening, Redis caching.