Introduction
In my previous project we decided to separate our single monolithic application into a main app, an app for auth and an app to handle content delivery.
The content in this case were the questions that made up online tests. The main app would allow the test taker to view their tests and results and to begin a test, and they would be redirected to the content delivery server to do each question that made up the test. When the test was complete they would be redirected back to the main app.
The auth server handled all authentication – the user would visit the auth server directly to provide their credentials and then be redirected to their homepage on the main app.
The architecture was based on the CAS single-sign on approach (please enjoy reading the protocol).
Our vision was multiple applications that shared a single auth server and a single (at least initially) content delivery server.