This project is part of Eventuate, which is a microservices collaboration platform.
This project is a fictional commercial real estate security system platform. It’s the sample application for a series of articles about authentication and authorization in microservices:
-
Overview of authentication and authorization in a microservice architecture
-
Implementing simple authorization
-
Developing complex authorization
-
Implementing complex authorization using Oso Cloud - part 1
-
Implementing complex authorization using Oso Cloud - part 2
The key elements of the RealGuardIO architecture are as follows:
-
React-based UI - runs in the browser and implements the RealGuardIO UI.
-
BFF
- the NextJS/Typescript-based Backend for front-end, which plays the role of an OAuth 2.0 client. It manages the user’s session, forwards requests from the React UI to the backend services and implements security using thenext-auth
library. -
IAM service
- handles authentication including the login page and issues access tokens and ID tokens to BFF. -
Security System Service
- managesSecuritySystems
In addition, there’s jaeger
for distributed tracing.
The application uses Docker Compose to run the services.
To run the application, you simply need to install the following prerequisites: Docker.
You can run the application using the following command:
docker compose up -d --build
You can stop the application using the following command:
docker compose down
You can access the application at http://localhost:3000.
The credentials are user1/password
.
Jaeger is used for distributed tracing in this application. It allows you to trace requests as they flow through services.
You can access the Jaeger UI at http://localhost:16686.
Here are the outbound requests from the BFF.
The application is written in Java, Typescript and React. To do development, you simply need to install and setup the following prerequisite: Mise. Mise will then install Java 17 and Node.js v22.x for you.
Contributions are welcome.
Please sign a contributor license agreement.