This is a small full-stack app with a FastAPI backend and a React + TypeScript (Vite) web UI. It implements a simple domain registry and two registrars, which can transfer domains between each other using OAuth2 authentication.
It is meant to be a hackathon demo for the IETF 126 RPP working group, to demonstrate how a domain registry and registrars can interact using OAuth2 and a pull transfer model.
This project uses Authentik as an OAuth2 provider for the registrars. The Authentik instance is configured to run on localhost:9991 for registrar A and localhost:9993 for registrar B.
Configuration files for the Authentik instances are located in the registrar/oauth2 and registrar/oauth2b directories. You can start the Authentik instances using Docker Compose.
The registrars are configured to use these Authentik instances for authentication. The configuration is specified in the .env and .env.registrar-b files in the registrar/backend directory.
Create a new application in Authentik for each registrar. Use the following settings:
- Application type: OAuth2
- Redirect URI:
http://localhost:<registrar_port>/api/auth/callback(replace<registrar_port>with the port of the registrar, e.g.,8001for registrar A and8002for registrar B) - Client ID and Client Secret: Use the values specified in the
.envand.env.registrar-bfiles.
Create a user in Authentik for each registrar. Use the following settings:
- Username:
user1for registrar A anduser2for registrar B - Password: same as the username (for simplicity in this hackathon setup)
Create a group and add the users to the group. Assign the group to the application created for each registrar.
cd registry
./start.shcd registrar
./start.shcd registrar
./start.sh --port 8002 --frontend-port 5175 --name 'Registrar B' --env-file .env.registrar-bDoes authentication for registrar A
cd registrar/oauth2/
docker compose up -dDoes authentication for registrar B
cd registrar/oauth2b/
docker compose up -d- Add OAuth2 security to the registry API endpoints

