Skip to content
This repository has been archived by the owner on Mar 29, 2023. It is now read-only.

🛂 A secure, ergonomic and time-saving monitoring solution for managing student presence in classes.

License

Notifications You must be signed in to change notification settings

FlorianLeChat/Digital-Identity

Repository files navigation

🛂 Identité numérique

⚠️ [FRENCH] Ce projet n'est pas destiné à un environnement production en dehors du cadre pédagogique et/ou de l'Université Côte d'Azur. L'utilisation hors de ce cadre est à proscrire.

⚠️ [ENGLISH] This project is not intended for use in a production environment outside the educational context and/or the Université Côte d'Azur. Usage outside of this scope is not allowed.

Ce projet à but pédagogique est développé pour la première année du Master de méthodes informatiques appliquées à la gestion des entreprises. Le sujet imposé était de proposer une solution pour moderniser le système d'émargement actuel (manuscrit) afin de protéger les données, prévenir et réduire la fraude par des étudiants malveillants. De plus, cette solution doit nécessairement digitaliser la gestion des présences et des absents pour les étudiants à destination de l'administration universitaire.

Il utilise le framework Symfony PHP pour toute l'infrastructure serveur, l'architecture client utilise les langages JavaScript, CSS (via préprocesseur SASS) et HTML (via génération du moteur de modèles TWIG).

Fonctionnalités prévues du front-office

  • Espace d'authentification : selon le rĂ´le de l'utilisateur, ce dernier est redirigĂ© vers son espace dĂ©diĂ© Ă  son rĂ´le (Ă©tudiant ou enseignant).
  • CrĂ©er un cours : l'enseignant crĂ©Ă© un cours en sĂ©lectionnant la formation, la matière, le groupe de TD/TP et le type de cours.
  • GĂ©nĂ©ration d'un QR Code : gĂ©nĂ©ration du QR Code lorsqu'un enseignant appuie sur « GĂ©nĂ©rer le QR Code ».
  • CrĂ©ation d'un UUID (Identifiant Unique Universel) : lorsque l'enseignant crĂ©Ă© un cours, ce dernier est insĂ©rĂ© dans l'URL du QR Code gĂ©nĂ©rĂ© pour des fins de contrĂ´les par l'Ă©quipe pĂ©dagogique ou par l'administration universitaire.
  • Consulter la liste des Ă©tudiants prĂ©sents/absents dans le cours actuel : la liste des personnes prĂ©sentes/absentes affiche les Ă©tudiants ayant validĂ© ou non leur prĂ©sence au cours.
  • ClĂ´turer l'appel : le QR Code est automatiquement rĂ©voquĂ© lorsque l'enseignant met fin au cours, rendant impossible aux Ă©tudiants la possibilitĂ© de se mettre prĂ©sent une fois le cours terminĂ©.
  • Scanner le QR Code : lorsqu'un Ă©tudiant scanne le QR Code, il est redirigĂ© vers son espace utilisateur avec un message de confirmation.
  • TĂ©lĂ©charger l'attestation du prĂ©sence : l'Ă©tudiant est capable de tĂ©lĂ©charger un certificat de prĂ©sence avec les informations du cours. Un jeton de validation est gĂ©nĂ©rĂ© dans l'attestation de prĂ©sence.*
  • Consulter mes prĂ©sences et absences : un Ă©tudiant est capable de tĂ©lĂ©charger les certificats de prĂ©sences des anciens cours mais aussi de savoir les absences enregistrĂ©es aux cours.
  • Justifier une absence : il est possible de tĂ©lĂ©verser un justificatif pour une absence et de l'enregistrer dans le système de fichiers du serveur.

*Cette partie est davantage détaillée dans le dernier point de ce fichier.

Fonctionnalités prévues du back-office

  • GĂ©rer les utilisateurs : crĂ©er, modifier ou supprimer un utilisateur.
  • GĂ©rer les formations : crĂ©er, modifier ou supprimer une formation.
  • GĂ©rer les matières : crĂ©er, modifier ou supprimer une matière.
  • GĂ©rer les absences : supprimer une absence, changer le statut d'une absence en la rendant justifiĂ©e ou non.
  • GĂ©rer les prĂ©sences : ajouter un Ă©tudiant dans la table des prĂ©sences.
  • ClĂ´turer l'appel : clĂ´turer une sĂ©ance si le l'enseignant a oubliĂ© de le faire prĂ©cĂ©demment.

Mécanisme de sécurisation pour les certifications de présence des étudiants

  1. Un enseignant fait l'appel et génère un QR code, un premier UUID (Identifiant Unique Universel, https://fr.wikipedia.org/wiki/Universally_unique_identifier) est généré seulement à des fins de lisibilité pour les utilisateurs finaux afin d'identifier de manière unique le cours créé, il est ensuite inséré dans la base de données « en clair » (sans aucun chiffrement).
  2. Un étudiant quelconque scanne ce même QR code avec son téléphone (l'URL du QR code contient l'UUID précédemment créé), il se fait rediriger vers son espace utilisateur pour se faire marquer présent, un deuxième UUID est généré pour identifier de manière unique la présence d'un étudiant vis-à-vis de ce cours. Une fois créé, cet identifiant est chiffré par une clé publique*, envoyé au client pour la troisième étape et il est enfin enregistré dans la base de données tel quel (sans aucun chiffrement), cet UUID chiffré est alors considéré comme un « jeton ».
  3. Une fois signalé comme présent au cours, l'étudiant est redirigé vers l'accueil de son compte et dispose d'un moyen pour télécharger son certificat de présence (sous format PDF), ce certificat fournit des renseignements sur le cours et sur l'étudiant. Un QR code est également présent à l'intérieur de ce document à des fins de contrôles pour l'équipe pédagogique ou par l'administration (l'URL de QR code contient le jeton numérique créé à l'étape précédente).
  4. Si le QR code de contrôle est scanné, le jeton est envoyé au serveur et procède à un déchiffrement avec la clé privée précédemment créé, si le jeton retourne un résultat et si le jeton correspond à l'identifiant de présence créé dans l'étape 2, alors cela signifie que l'étudiant était réellement présent au cours (les informations du cours et de l'étudiants sont alors envoyées).

Avant d'effectuer toute opération et si cela est nécessaire, une paire de clé (publique et privée) sont générées automatique avec la méthode de hachage « SHA-512 » et ayant une longueur de 4096 bits.

image