A secure and scalable multi-factor authentication system including a client application, admin dashboard, and backend server. The implementation seen here implements a secure file storage system but the underlying authentication system could be used for any application.
Here is a video overview of our system. You can view it on YouTube if you prefer.
Demo-Video.mp4
- Client application to manage secure file storage
- Encrypted communications between clients and the server
- Only hashed passwords stored in the database
- Custom microcontroller setup for authentication
- Multi-factor authentication
- Password
- Facial recognition
- Motion device authentication
- Admin dashboard to view login attempts
- Install the latest version of the client application from the releases page and run it.
- You can then create an account and start using the application by uploading and managing files.
- The admin dashboard can be found at 3fa.netlify.app. You can use the account
admin@3fa.com
with the passwordPassword1
to login. Note that you will have to login to the client application with these credentials first.
Note: To avoid having to construct the microcontroller device yourself, you can use either sign up with accounts that do not use the sensor password option or you can use the mock device script in the embedded folder along with a REST client like Postman to authenticate with the server (not recommended without a thorough understanding of the system). If you choose the latter option, you will benefit from reading
API.md
to better understand the API. You can also import the Postman collection and Postman environment to get started.
- See
/admin-system/backend/README.md
to setup the backend server. - See
/admin-system/frontend/README.md
to setup the admin dashboard. - See
/client/README.md
to setup the client application.
3FA
├─ .github # GitHub Actions CI/CD - testing and deployment
|
├─ admin-system # Admin dashboard and backend server
│ ├─ backend # Flask backend server - Elio
│ │ ├─ api # Implementation of the API
│ │ └─ tests # Tests for the API
│ └─ frontend # React admin dashboard - Kelvin
|
├─ client # Electron client application - Kelvin
|
├─ embedded # Microcontroller authentication device code - Matthew
│ ├─ application # Top level application code
│ ├─ demo # Demo modules for features of the main application
│ └─ lib # Saved CircuitPython library dependencies
|
├─ machine-learning # Machine learning model training and testing - Divy
│ └─ data # Dataset for training and testing
└─ static # Static files for project README
This is our system overview detailing the interactions between all the hardware and software.