Authorization service

In 2016, I started internal projects for my own company and one was to develop an OAuth2 authorization service to be used and deployd as a cloud service.

The purpose of the authorization service was to provide me a way to secure a set of RESTful services I also planned to develop. I was thinking of RESTful service for internal applications for time-reporting, invoices, customer care, etc.

#Original project goal

The project had some initial goals such as it should be distributed and hosted as a cloud-based service in IBM Cloud, now migrated to Microsoft Azure and;

  • runs in Node.js using the Express.js framework,
  • fully compatible with RFC 6749 and RFC 6750,
  • uses Mongo Atlas as a cloud database service,
  • is built on best practice design for RESTful API,
  • uses the JSON Schema for validation and sanitation of data models,
  • available in repos at Github for evaluation.

It was also obvious that I would need to develop an administration client, a web application, to be able to manage the registration of client applications, signing up user accounts, managing scopes and normal basic maintenance.

The goal of the administration client was that it should be distributed and hosted as a cloud-based service in IBM Cloud, now migrated to Microsoft Azure and;

  • developed as an SPA - Single Page Application,
  • uses React and MaterialUI as the UI framework,
  • uses ReactRouter for navigation,
  • uses Redux for state management,
  • uses axios for XHR and REST API calls,
  • uses JSON Scheme for data validation and consistency,
  • uses Jest and Enzyme for unit testing,
  • available in a repo at Github for evaluation.

#Project outcome The project overall was successful, I learned a lot and today I have much better understanding after numerous rounds of redesign, refactoring etc, and the most difficult part is to stop re-design it when I see new way of solving problems that I want to learn.

You can see the code and modules for the OAuth2 services at:

The administration client is not finished yet if ever but you can se the code at:


Published: 2020-01-11
Author: Henrik Grönvall
Henrik Grönvall
Copyright © 2022 Henrik Grönvall Consulting AB