How Enravo Core manages multiple API clients with isolated security policies, per-client login roles, and independent rate limits.
Most APIs serve a single type of client. But real-world products need more: a mobile app for customers, a web dashboard for administrators, a headless API for partners, and internal tools for operations. Each client has different security requirements, different data access patterns, and different threat models. Enravo Core was built to handle this from day one.
Traditional API architectures apply the same authentication and authorization rules to every consumer. The mobile app and the admin dashboard use the same token format, the same rate limits, the same session rules. This creates a constant tension: make security tight enough for the admin panel, and the mobile app becomes unusable. Relax it for mobile, and the admin panel is under-protected.
In Enravo Core, every API consumer is a registered Client. Each client gets its own Client ID, credentials, and a complete security configuration. When a request arrives, the guard pipeline evaluates it against the rules of the specific client that made the request — not a global policy.
id: mobile_consumer
platform: android
login_roles: [customer]
attestation: play_integrity
pop_mode: required
device_limit: 3
device_overflow: replace
rate_limit:
requests_per_minute: 60
burst: 10
ip_allowlist: [] # open
endpoint_scopes:
- "products/*"
- "orders/*"
- "profile/*"id: admin_dashboard
platform: web
login_roles: [administrator, moderator]
attestation: none
pop_mode: optional
device_limit: 5
device_overflow: block
rate_limit:
requests_per_minute: 120
burst: 30
ip_allowlist:
- "10.0.0.0/8"
endpoint_scopes:
- "*" # full accessThe mobile consumer app can only authenticate users with the 'customer' role. Even if an admin's credentials are entered in the mobile app, the login will be rejected because the client's login_roles don't include 'administrator'. This is client-level enforcement — it happens before the user's credentials are even checked.
When a request enters the guard pipeline, the first thing that happens is client identification. The X-Client-ID header tells the pipeline which set of rules to apply. From that point forward, every stage — JWT validation, device checks, PoP verification, ability checks, and policy enforcement — uses the client-specific configuration.
Despite the per-client isolation, all clients are managed from a single admin interface. You can create new clients, adjust their policies, monitor their traffic, and revoke access — all in real-time. Adding a new platform (say, a POS terminal) means creating a new client configuration. No code changes, no deployment.
This is the architecture that powers Rakton's multi-channel operations: a single backend serving mobile apps, web dashboards, marketplace integrations, and POS terminals — each with its own security profile, all running on the same Enravo Core instance.
If your API serves multiple types of clients, you need per-client security policies. Not middleware hacks, not environment variables — a first-class client model where each consumer has its own identity, rules, and limits. That's what Enravo Core provides.