Our Approach
We designed and implemented a unified authorization service supporting three complementary models:
1. Role-Based Access Control (RBAC)
Traditional role assignments for standard permissions.
2. Fine-Grained Access Control (FGAC)
Granular permissions beyond simple roles.
3. Relational Authorization
The key innovation: a user's access to a transaction depends on their relationship to a branch, which has a relationship to a participant, which has a role in the transaction.
Implementation
- Single NuGet interface for all consuming services
- Centralised permission evaluation removing direct database access
- Query optimisation with strategic indexing for production-scale data
- Backward compatibility layer to support gradual migration from legacy implementations
The core implementation took 2-3 weeks. The subsequent effort to maintain backward compatibility with eight legacy approaches took three months - a deliberate investment to avoid a risky big-bang migration.