Skip to content

A secure and scalable multi-factor authentication system including a client application, admin dashboard, and backend server

License

Notifications You must be signed in to change notification settings

Computing-Collective/3FA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Admin Backend CI/CD Admin Dashboard CI Client CI Netlify Status

3FA

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.

Status Page

Table of Contents

Overview

Here is a video overview of our system. You can view it on YouTube if you prefer.

Demo-Video.mp4

Features

  • 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

Getting Started

Using our servers

  1. Install the latest version of the client application from the releases page and run it.
  2. You can then create an account and start using the application by uploading and managing files.
  3. The admin dashboard can be found at 3fa.netlify.app. You can use the account admin@3fa.com with the password Password1 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.

Setting up your own servers

  1. See /admin-system/backend/README.md to setup the backend server.
  2. See /admin-system/frontend/README.md to setup the admin dashboard.
  3. See /client/README.md to setup the client application.

Repository Contents

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

Architecture Overview

This is our system overview detailing the interactions between all the hardware and software.

Systems Diagram