This page discusses the purpose, design, and functionality of MCC’s authentication service with Keycloak. Please keep this page updated with latest changes if you are working on tasks relating to MCC Auth.
MCC is the application which allows satellite operators and technicians to send commands to the CubeSat and view received telemetry. If unintended users or malicious agents can gain access to MCC controls and data, they can cause severe damage. This is why MCC authentication has fundamentally different priorities compared to ARO authentication, which is public-facing and less vital to the functioning of GS.
Keycloak is a self-hosted, open-source identity provider, like a local Auth0. Since we are prioritizing safety and security over speed, we want to have production-grade authentication without dependency on external services (Auth0, Clerk, Supabase Auth, etc.). Additionally, its best to not have to handle password management, JWT/JWKS rotations, and retry behavior that would sap time away from meaningful development of GS. There are many ways to run the Keycloak service, but on GS we use a docker container composed together with the API for more streamlined local development and easier deployment in the future. It manages a separate users table in its H2 database, though in the future it should be connected to an external PostgreSQL database for better data management.
RedirectResponse from the APIRedirectResponse , redirecting the user to the authenticated MCC landing page401 Unauthorized if authentication fails.