Licensing Framework
A robust access control framework, which enables fine-grained management of privileges and integrations across different products, teams, capabilities, user interfaces and features
Worked On
UX, UI, Backend, Policy Framework
Tech Stack
Go+Gin, Postgres, Ruby+Rails, Redis, Angular
Date
July, 2019
Challenge
To build a licensing mechanism in the which can be used to manage detailed access to users at different products, packages, interfaces and features level.
Solution
Designed UX, implemented UI and coded a generic framework from scratch in a new programming language, used for critical operations, integrations with different technologies and also support for multiple programming languages.
Granting a user access to multi-layered features was difficult and controlling the privileges at company licenses, packaging capability, user interface and feature level was very challenging to manage manually.
The Licensing framework was a robust design to overcome this and scale easily across different products, capabilities, interfaces and features. This gave fine-grained control over access provisioning, where once the licenses are set up, the customers can add any user to any features and manage the full control themselves. I used Postgres for the backend datastore as the data was highly relational and required transactional support. Microservice was written from scratch in Go+Gin to expose the contracts. This was the first GoLang based micro-service to go live in production in Fourkites.
I programmed a generic license validator logic as middleware in Ruby, Go, Angular and made it easily pluggable in the form of policies. Each API controller had a licensing policy attached, where we can specify what privilege is required to establish an authorized contract with each API. In the frontend, we can attach policies in interceptor logic that decided whether to show a page or load a feature to users depending on their licenses.
This also boosted the developer productivity as now all a developer had to do was just write one-liner policy for each REST API and the framework will ensure that all authorizations and validations are regulated.