Système de Contrôle d'Accès Connecté Sécurisé

Basé sur IoT et gestion d'utilisateurs centralisée

Étudiant : Rayan Labiad

Objectifs du Projet

Mettre en place un système complet de contrôle d'accès intelligent simulant un environnement professionnel réel utilisé dans les entreprises ou bâtiments sécurisés.

🔓

Contrôle Physique

Ouvrir une serrure électrique connectée via badge NFC ou bouton physique

👥

Gestion Utilisateurs

Administrer les droits d'accès et les autorisations par porte

📊

Traçabilité

Enregistrer tous les événements avec date, heure et statut

📱

Administration

Contrôler le système à distance via application mobile

🏢

Intégration LDAP

Connexion à l'Active Directory de l'entreprise

🔒

Sécurité

Infrastructure protégée par VPN, Firewall et Zero Trust

Architecture Globale

Le système est composé de plusieurs parties interconnectées travaillant en synergie.

Partie IoT (Matériel)

  • ESP32 (microcontrôleur)
  • Relais 5V
  • Serrure électrique 12V
  • Bouton physique
  • Lecteur NFC
  • Réseau WiFi
📡

Communication Réseau

  • Protocole MQTT
  • Envoi demandes d'accès
  • Réception autorisations
  • Transmission logs
☁️

Serveur Cloud

  • VPS Ubuntu
  • Broker MQTT Mosquitto
  • Backend Python FastAPI
  • Base Supabase
  • LDAP Active Directory
  • VPN OpenVPN

Fonctionnement du Système

Processus complet du traitement d'une demande d'accès, de la détection à l'ouverture.

1
Détection Un utilisateur badge ou appuie sur le bouton
2
Requête MQTT L'ESP32 envoie une requête MQTT au serveur
3
Traitement Le serveur reçoit la demande et FastAPI vérifie l'utilisateur
4
Vérification Contrôle dans Supabase et Active Directory (LDAP)
5
Autorisation Vérification des droits d'accès à la porte concernée
6
Réponse Si autorisé, réponse MQTT envoyée à l'ESP32
7
Activation L'ESP32 active le relais et ouvre la serrure
8
Enregistrement Log enregistré dans la base de données
Exemple de Log Système
12:03:22 → badge détecté
12:03:23 → utilisateur validé LDAP
12:03:23 → accès autorisé porte A
12:03:24 → serrure ouverte

Backend FastAPI

Le cœur du système

FastAPI centralise toute la logique métier et coordonne tous les composants du système. Il assure la communication entre l'IoT, la base de données, l'Active Directory et l'application mobile.

Communication MQTT

  • Recevoir les requêtes
  • Traiter les demandes d'accès
  • Envoyer les réponses

Base de Données

  • Communiquer avec Supabase
  • Vérifier les droits
  • Enregistrer les logs

Intégration LDAP

  • Interroger Active Directory
  • Valider les utilisateurs
  • Synchroniser les données

LDAP / Active Directory

Connexion à un Active Directory via LDAP pour simuler un environnement professionnel réel.

Vérification Identité

Confirmer si un utilisateur existe dans l'annuaire de l'entreprise

Récupération Données

Obtenir les informations de l'utilisateur depuis l'AD

Synchronisation

Synchroniser avec la base locale du système

Sécurité

Éviter la création de faux utilisateurs non validés

Application Mobile

Application d'administration développée avec FlutterFlow permettant la gestion complète du système.

Gestion Utilisateurs

  • Recherche dans Active Directory
  • Ajout au système
  • Attribution de badges NFC

Gestion Portes

  • Visualisation des portes
  • Attribution des accès
  • Modification des droits

Monitoring

  • Historique des ouvertures
  • Logs en temps réel
  • Statut des portes

Sécurité du Système

Mise en place d'une architecture de sécurité complète suivant le principe Zero Trust.

🔐 Authentification MQTT

Utilisateur et mot de passe requis pour toute communication MQTT

🛡️ VPN OpenVPN

Accès administrateur sécurisé via réseau privé virtuel

🚧 Firewall UFW

Ports limités et accès contrôlé pour une protection optimale

✅ Architecture Zero Trust

Chaque composant doit être authentifié avant toute communication

Technologies Utilisées

Matériel

ESP32 Relais 5V Serrure Électrique 12V Lecteur NFC Bouton Physique

Logiciel

MicroPython MQTT Mosquitto Python FastAPI Supabase LDAP Active Directory FlutterFlow Ubuntu VPS OpenVPN UFW Firewall