Diplôme en : SCIENCES DE L’INFORMATIQUE République Tunisienne Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Option : Génie Logiciel et Système d’Information Université de Sfax Faculté des Sciences de Sfax N° d’ordre : LSI-8 MEMOIRE présenté à La Faculté des Sciences de Sfax en vue de l’obtention du DIPLOME DE LICENCE EN SCIENCES DE L’INFORMATIQUE Option : Génie Logiciel et Système d’Information par Raddaoui Yassine Application Web pour la Gestion de Recrutement Soutenu le 15/06/2022, devant la commission d’examen : M. Loukil Noureddine Mme. Khamkhem Sana M. Ali Salem M. Hadhri Abd kader Président Rapporteur Encadrant Responsable Entreprise DEDICATION A travers ce modeste travail, je tiens à exprimer ma plus profonde reconnaissance À Mes très chers parents, pour tous leurs sacrifices, leur amour, leur tendresse, leur soutien et leurs prières tout au long de mes études. À Mes chères sœurs, pour leurs grand amour et leurs soutiens qu’elle trouve ici l’expression de ma haute gratitude. À Tous mes professeurs pour leur générosité et leur soutien. À Mes amis pour leur support moral. À vous tous, Je dédie ce travail. Raddaoui YASSINE FS-SFAX Page i REMERCIEMENT C’est avec un grand plaisir que je réserve ces quelques lignes pour adresser mes sincères remerciements aux personnes qui m’ont aidé durant tout le déroulement du stage. Nous remercions d’abord mon encadrant de ce projet, Mr Ali SALEM pour ses recommandations judicieuses, sa patience, ses conseils académiques et ses disponibilités qui ont été un atout pour moi. Je tiens à remercier également l’ensemble du personnel de la Compagnie de phosphate de Gafsa pour leur accueil sympathique et leur coopération professionnel tout au long de mon stage, et en particulier, nous remercions Mr Abd kader Hadhri pour le suivi, les remarques constructifs et la qualité de l’encadrement dont il ma a fait bénéficier. Je ne saurais terminer ce rapport sans remercier tous les enseignants de la faculté des sciences de Sfax pour la qualité de la formation qu’ils nous ont prodigué. FS-SFAX Page ii TABLE DES MATIÈRES LISTE DES FIGURES vi LISTE DES TABLES vii LISTE DES ABRÉVIATIONS viii INTRODUCTION GÉNÉRALE 1 1 Étude Préalable 3 1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2 Organisme d’accueil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2.1 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2.2 Activités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2.2.1 Extraction du phosphate . . . . . . . . . . . . . . . . . . . . 5 1.2.2.2 La Production . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2.2.3 La Commercialisation . . . . . . . . . . . . . . . . . . . . . 6 1.3 Présentation du sujet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4 Étude de l’existant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4.1 Description de l’existant . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4.2 Critique de l’existant . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.5.1 Solutions envisageables . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.5.2 Solution retenue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.5.3 Spécification des besoins . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.3.1 Besoins fonctionnels . . . . . . . . . . . . . . . . . . . . . . 9 1.5.3.2 Besoins non fonctionnels . . . . . . . . . . . . . . . . . . . 10 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.5 1.6 2 Analyse et Conception 12 2.1 13 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FS-SFAX Page iii TABLE DES MATIÈRES 2.2 Vue statique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2.1 Diagramme des cas d’utilisation . . . . . . . . . . . . . . . . . . . . . 13 2.2.1.1 Identification des acteurs . . . . . . . . . . . . . . . . . . . 13 2.2.1.2 Diagramme de cas d’utilisation global . . . . . . . . . . . . 14 2.2.1.3 Diagramme de cas d’utilisation « Gérer Administrateurs » . 15 2.2.1.4 Diagramme de cas d’utilisation « Gérer Spécialités » . . . . 17 2.2.1.5 Diagramme de cas d’utilisation « Gérer Candidats » . . . . . 18 Diagramme de classes . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Vue dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.3.1 . . . . . . . . . . . . . . . . . . . . . . . . 22 2.3.1.1 Diagrammes de séquence « S’authentifier » . . . . . . . . . 22 2.3.1.2 Diagrammes de séquence «Accès au donnés protégées» . . . 25 2.3.1.3 Diagrammes de séquence « Générer Spécialités » . . . . . . 26 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.2.2 2.3 2.4 3 Diagrammes de séquence Chapitre Réalisation 27 3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.2 Choix architectural . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.2.1 Architecture applicative . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.2.1.1 Choix d’architecture du web services . . . . . . . . . . . . . 28 3.2.1.2 Choix de la stratégie d’échange de données . . . . . . . . . 29 3.2.1.3 Choix de technique de stockage des mots de passes . . . . . 30 Architecture technique . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Environnement du travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.3.1 Environnement logiciel . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.3.2 Technologies et langages de programmation utilisées . . . . . . . . . . 34 Interface de l’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.4.1 Interfaces relatives aux candidats . . . . . . . . . . . . . . . . . . . . 37 3.4.2 Interfaces relatives aux administrateurs . . . . . . . . . . . . . . . . . 40 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.2.2 3.3 3.4 3.5 CONCLUSION GÉNÉRALE 45 BIBLIOGRAPHIE 46 ANNEXES 49 A.1 Session Cookies vs. JSON Web tokens . . . . . . . . . . . . . . . . . . . . . . FS-SFAX 49 Page iv TABLE DES MATIÈRES A.1.1 Session Cookies vs. JSON Web tokens — L’approche . . . . . . . . . 49 A.1.2 Cookies de session vs JSON Web tokens - Avantages et inconvénients . 53 A.1.3 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 A.2 Bcrypt : une norme de sécurité cryptographique . . . . . . . . . . . . . . . . . 55 A.2.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 A.2.2 Qu’est-ce que Bcrypt ? . . . . . . . . . . . . . . . . . . . . . . . . . . 55 A.2.3 Comment fonctionne Bcrypt ? . . . . . . . . . . . . . . . . . . . . . . 56 FS-SFAX Page v LISTE DES FIGURES 2.1 Diagramme de cas d’utilisation global . . . . . . . . . . . . . . . . . . . . . . 15 2.2 Diagramme du cas d’utilisation « Gérer Administrateurs » . . . . . . . . . . . 16 2.3 Diagramme de cas d’utilisation « Gérer Spécialités » . . . . . . . . . . . . . . 17 2.4 Diagramme de cas d’utilisation « Gérer Candidats » . . . . . . . . . . . . . . . 19 2.5 Diagramme de classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.6 Diagrammes de séquence « S’inscrire » . . . . . . . . . . . . . . . . . . . . . 23 2.7 Diagrammes de séquence « Login » . . . . . . . . . . . . . . . . . . . . . . . 24 2.8 Diagrammes de séquence « Accès au donnés protégées » . . . . . . . . . . . . 25 2.9 Diagrammes de séquence « Générer Spécialités » . . . . . . . . . . . . . . . . 26 3.1 L’architecture REST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.2 Architecture technique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.3 Interface d’authentification . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.4 Interface de candidature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.5 Interface de Spécialités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.6 Fiche de candidature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.7 Interface d’authentification . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.8 Interface de gestion de spécialités . . . . . . . . . . . . . . . . . . . . . . . . 41 3.9 Interface de gestion des administrateurs . . . . . . . . . . . . . . . . . . . . . 41 3.10 Interface de gestion des candidats . . . . . . . . . . . . . . . . . . . . . . . . 42 3.11 Interface des statistiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.12 Visual Studio Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 A.1 Approche basée sur les cookies de session . . . . . . . . . . . . . . . . . . . . 50 A.2 Approche basée sur les JWT JSON Web Token . . . . . . . . . . . . . . . . . 50 A.3 Algorithme de Bcrypt 57 FS-SFAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page vi LISTE DES TABLES LISTE DES TABLES 1.1 Solution proposée & Critique . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.1 Identification des acteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.2 Description textuelle du cas d’utilisation « Gérer Administrateurs» . . . . . . . 16 2.3 Description textuelle du cas d’utilisation « Gérer Spécialités » . . . . . . . . . 18 2.4 Description textuelle du cas d’utilisation « Gérer Candidats » . . . . . . . . . . 19 3.1 Environnement logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.2 Technologies et langages de programmation utilisées . . . . . . . . . . . . . . 36 FS-SFAX Page vii LISTE DES ABRÉVIATIONS JPA Java Persistence API CPG Compagnie des phosphates de Gafsa MIME Multipurpose Internet Mail Extensions JWT JSON Web Tokens DB DataBase HTTP Hypertext Transfer Protocol REST Representational state transfer XML Extensible Markup Language URL Uniform Resource Identifier CLI Command-Line Interface NPM Node Package Manager MIT Massachusetts Institute of Technology RH Ressources Humaines CV Curriculum Vitae FS-SFAX Page viii INTRODUCTION GÉNÉRALE De nos jours, l’informatique est considérée comme un outil indispensable à toute entreprise qui ne veut pas rester en marge de la mondialisation. En effet, elle est apparue depuis longtemps comme un soutien aux différentes opérations logistiques des entreprises et au besoin croissant des sociétés en matière d’information. Ce soutien a évolué dans le temps et dans l’espace, et même, s’est accru grâce à l’amélioration des systèmes informatiques, ainsi qu’à la perpétuelle performance du matériel informatique. Cela s’est matérialisé notamment par la réduction progressive des coûts et la rapidité du traitement des données. Cette évolution continue de sorte qu’il est impossible de gérer une entreprise sérieuse sans l’informatiser. Avec l’introduction de l’informatique, le monde de l’entreprise trouve les solutions à ses multiples problèmes liés, notamment, au coût de l’information, à la communication, à l’enregistrement des données et aux différents calculs comptables. Désormais, les évolutions récentes de l’informatique appellent à reconsidérer la dynamique structurelle et fonctionnelle des entreprises. Ainsi, les systèmes d’information doivent être actualisés en permanence suivant la nature de l’environnement concurrentiel des entreprises. Notre travail se situe dans ce contexte. En effet, dans le cadre mon stage de fin d’études, la Compagnie des phosphates de Gafsa m’a confié l’étude, la conception et le développement d’une application web pour la Gestion de recrutements. Le présent rapport explique les différentes étapes suivies pour réaliser le travail demandé. Nous commençons le rapport par un premier chapitre, dans laquelle nous présentons l’organisme d’accueil ainsi que une étude théorique basée essentiellement sur deux modules à savoir l’étude de l’existant et de la solution proposée. Le deuxième chapitre traite les problèmes associés à l’analyse et la conception. La partie réalisation fait l’objet du troisième chapitre. Où, nous FS-SFAX Page 1 INTRODUCTION GÉNÉRALE expliquons nos choix architecturaux, l’environnement matériel et logiciel du travail et certaines interfaces graphiques de l’application élaborée. Comme tout rapport, nous clôturons ce travail par une conclusion. Nous récapitulons les différentes étapes suivies pour l’élaboration de ce projet et nous signalons ses différentes perspectives. FS-SFAX Page 2 Chapitre 1 Étude Préalable Sommaire 1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2 Organisme d’accueil . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2.1 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2.2 Activités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3 Présentation du sujet . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4 Étude de l’existant . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.5 1.6 FS-SFAX 1.4.1 Description de l’existant . . . . . . . . . . . . . . . . . . . . . . 6 1.4.2 Critique de l’existant . . . . . . . . . . . . . . . . . . . . . . . . 7 Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.5.1 Solutions envisageables . . . . . . . . . . . . . . . . . . . . . . . 8 1.5.2 Solution retenue . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.5.3 Spécification des besoins . . . . . . . . . . . . . . . . . . . . . . 9 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Page 3 ÉTUDE PRÉALABLE 1.1 Introduction Dans ce chapitre, nous décrirons le contexte général du projet. Nous présenterons d’abord l’entreprise au sein de laquelle s’est déroulé le stage. Nous enchaînerons, par la suite, par l’explication le sujet et ses différents modules. 1.2 Organisme d’accueil La Compagnie des Phosphates de Gafsa (CPG) est une entreprise publique anonyme à caractère industriel et commercial. Elle a pour objet l’exploitation des gisements de phosphate en Tunisie. — Date de création : 1897 — Effectif (à fin 12/2016) : 6619 — Site web :www.cpg.com.tn — Nombre de cadres supérieurs (à fin 12/2016) : 538 — Capacité de production : 8 Million de tonnes — Chiffre d’affaire 2012 : 553 196 milles Dollars[1] — Rang mondial de Production : 5 ème 1.2.1 Historique C’était en avril 1885, lors d’une prospection dans la région de Metlaoui, partie occidentale du sud du pays, que Philippe THOMAS, géologue amateur français, a découvert des couches puissantes de phosphates de calcium sur le versant Nord de JEBEL THELJA. D’autres prospections géologiques et des explorations de grande envergure ont suivi cette découverte décisive. Celles-ci ont révélé l’existence d’importants gisements de phosphates au sud et au Nord de l’île de Kasserine. A partir de 1896, date de création de "la Compagnie des Phosphates et de Chemin de Fer de Gafsa," une nouvelle activité industrielle des phosphates a vu le jour dans le pays. Les FS-SFAX Page 4 ÉTUDE PRÉALABLE premières excavations ont commencé dans la région de Metlaoui et vers 1900, la production des phosphates marchands a atteint un niveau de 200,000 tonnes. En 1996 c’est la fusion des deux structures commerciales de la Compagnie des Phosphates de Gafsa et du Groupe Chimique Tunisien. Avec une expérience centenaire dans l’exploitation et la commercialisation des phosphates tunisiens, la CPG figure parmi les plus gros producteurs de phosphates dans le monde. [2] 1.2.2 Activités Le phosphate est la principale richesse du gouvernorat de Gafsa. Cette substance est exploitée par la Compagnie des Phosphates de Gafsa qui joue un rôle important dans le développement de son environnement. Les activités de la CPG sont : l’extraction, la production et la commercialisation du phosphate. 1.2.2.1 Extraction du phosphate Les méthodes d’extraction étaient au début classiques, par la suite la société a fait recours de plus en plus aux méthodes mécanisées et beaucoup plus évoluées. Il existe en fait neuf carrières d’extraction. L’extraction est assurée selon la recette suivante : − Ciblé : la séparation de gros et fines de tout venant. − Trié : la séparation manuelle du refus du criblé. − Broyé : la réduction granulométrique des blocs du minerai. Étant précisé que le phosphate (BTS : brut, trié, séché) de la compagnie est extrait à partir de neuf carrières d’extraction. [3] 1.2.2.2 La Production La compagnie produit deux qualités principales de phosphates naturels marchands : − Qualité 65-68% filtrée et séchée : utilisée pour la production des engrais chimiques. − Qualité 60-62% pour l’application directe. FS-SFAX Page 5 ÉTUDE PRÉALABLE A la fin de ce processus de production, le phosphate est soit stocké dans les cuves des usines, soit chargé dans les wagons pour être expédié vers les locaux et à l’étranger. [4] 1.2.2.3 La Commercialisation Cette opération se réalise à deux niveaux : − Local : le phosphate est commercialisé aux usines d’engrais chimiques de Gabes et de Sfax soit 80% de la totalité de la production. − Étranger : la C.P.G exporte sa production en Europe, en Asie et en Amérique latine. [5] 1.3 Présentation du sujet Le sujet de notre stage consiste en la conception et le développement d’une application web pour la gestion de recrutement au sein de la CPG. l’objectif est d’automatiser le processus de recrutement commençant par la phase de dépôt de dossiers jusqu’aux affectations du nouvel recrut dans le département adéquat. Bien sûr, notre application doit offrir aux candidat le service de suivi des candidatures. 1.4 Étude de l’existant L’étude de l’existant constitue une étape préliminaire pour la réalisation de toute application. En effet, elle permet d’analyser, d’évaluer et de critiquer le fonctionnement habituel, tout en élaborant la liste des solutions possibles afin d’en retenir une comme solution finale. Nous commencerons ce chapitre par une étude de l’existant. Le reste du chapitre, concernera l’étude de la solution retenue, les outils et les fonctionnalités développées. 1.4.1 Description de l’existant La gestion des candidatures au sein de l’entreprise CPG se déroule actuellement de la manière suivante : FS-SFAX Page 6 ÉTUDE PRÉALABLE − Les dossiers de candidatures sont traités de manière papier et numérique (au format PDF) ou uniquement sous format papier. − Les données issues de ces dossiers sont entrées dans un tableau Microsoft Excel et un premier avis est donné par le responsable qui examine l’intégralité des dossiers. − Les meilleurs candidats sont sélectionnés parmi le flux des CV reçus. − Des entretiens et des tests sont planifiés avec les candidats qui ont été choisis et qui vont être informés par un courrier par la poste. 1.4.2 Critique de l’existant Le processus de recrutement, mentionné ci-dessus, souffre d’un ensemble d’inconvénients dont nous citons : − Nécessite l’intervention humaine sur tout le processus. − L’entreprise et notamment le service ressources humaines risque d’être submerger par un nombre inconsidérable de candidatures et ainsi passer à côté d’un candidat intéressant par manque de temps pour le traitement de ces candidatures. − Présente un caractère répétitif − Grande charge de travail − Multiplicité de bugs − Manque d’organisation, pas de gestion de visibilité, protection et contrôle des documents. − Coûts générés par le temps passé par le(s) collaborateur(s) RH ou opérationnels en charge du recrutement. 1.5 Solutions Dans cette section nous présentons les différentes solutions prévues au présent problématique. FS-SFAX Page 7 ÉTUDE PRÉALABLE 1.5.1 Solutions envisageables Afin de résoudre les problèmes sus indiqués, plusieurs solutions peuvent être mise en place. Parmi ces solutions nous citons : Solution proposée Le téléchargement Critique et Nous ne pouvons ni la l’utilisation d’une application maintenir ni la modifier libre à partir du web. à moins qu’elle soit open source. L’achat d’un application web Le coût de l’achat sera très prête. élevé. Le développement nouvelle application d’une qui Cette solution nécessite un développement sur mesure. respecte la procédure déjà établie. TABLE 1.1 – Solution proposée & Critique 1.5.2 Solution retenue Parmi les solutions indiquées, nous avons opté pour le développement d’une nouvelle application web pour la gestion de recrutement. Elle doit respecter les conditions suivantes : − Centraliser l’information et les données concernant le recrutement − Diminuer le temps de saisie des candidatures − Diminuer le temps de suivi d’une candidature, − Partager plus facilement l’information des candidatures et les statistiques avec les responsables de services. FS-SFAX Page 8 ÉTUDE PRÉALABLE 1.5.3 Spécification des besoins Nous présentons, dans cette partie, essentiellement, l’ensemble des fonctionnalités offertes par le future système et entre autre, les besoins fonctionnels et non fonctionnels. 1.5.3.1 Besoins fonctionnels Les besoins fonctionnels expriment les actions que doit effectuer le système en réponse aux demandes (sorties qui sont produites pour un ensemble donné d’entrées). Notre application se divise en deux grandes parties : - Partie logique métier ou partie serveur pour la préparation de l’API. - Partie frontale ou partie cliente pour la réalisation de l’interface graphique. Besoins fonctionnels au niveau du Serveur : 1− Développer une API REST pour générer des spécialités adéquates avec les candidats. 2− Développer des API REST pour gérer les utilisateurs et leurs rôles. 3− Développer une API REST pour gérer l’authentification : ∗ Inscription. ∗ Connexion. ∗ Déconnexion. ∗ Jeton de connexion à durée limite. 4− Développer des services pour sécuriser les données sensibles, par exemple : hachage et cryptage des mots de passe. 5− Développer un service de vérification des rôles et des droits d’accès aux services web. Besoins fonctionnels au niveau du Client : Ces besoins expriment les différentes fonctionnalités standards offertes aux utilisateurs de l’application web. Ils peuvent se résumer comme suit : 1− Développer le module d’authentification : FS-SFAX Page 9 ÉTUDE PRÉALABLE ∗ Développer l’interface et la logique nécessaire pour la page inscription. ∗ Développer l’interface et la logique nécessaire pour la page s’identifier. ∗ Développer la logique de déconnexion. ∗ Ajouter les contrôles d’accès sur les données. 2− Développer l’interface et la logique nécessaire pour la page du candidature. 2− Développer l’interface et la logique nécessaire pour la page des spécialités. 3− Développer l’interface et la logique nécessaire qui permettent à l’administrateur de gérer les spécialités , les candidats et les administrateur. 4− Développer l’interface et la logique nécessaires pour la page statistiques. 1.5.3.2 Besoins non fonctionnels Un besoin non-fonctionnel est une condition qui spécifie les critères qui peuvent être utilisés pour juger le fonctionnement d’un système, plutôt que des comportements de celui-ci. Cela devrait être mis en contraste avec les exigences fonctionnelles qui définissent le comportement spécifique ou les fonctions désirés. Même si ces besoins n’étant pas décisifs au fonctionnement du système, ils représentent un bon signe sur la nature du système : − Autonomie du système : le système s’exécute et fonctionne entièrement sans avoir recours à d’autres applications − Convivialité : l’interface utilisateur doit être conviviale pour assurer un accès aisé aux données. − Ergonomie : l’application doit être ergonomique et facile à utiliser. − Navigabilité : elle doit être aussi navigable en donnant la possibilité à l’utilisateur d’accéder aux différentes rubriques à partir de n’importe quelle page grâce à la présence d’un menu. − Gestion des erreurs : Les erreurs doivent être signalées par des messages d’erreur explicites. − Sécurisé : Les données des candidats sont seulement accessibles par le(s) opérationnels en charge du recrutement. FS-SFAX Page 10 ÉTUDE PRÉALABLE 1.6 Conclusion Après avoir fait une analyse de l’existant pour fixer les besoins et les objectifs visés, ce chapitre a permis de spécifier les besoins fonctionnels et non fonctionnels que l’outil doit offrir aux utilisateurs. Nous prendrons en détaille notre solution, dans le chapitre suivant, à travers l’étude conceptuelle. FS-SFAX Page 11 Chapitre 2 Analyse et Conception Sommaire 2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2 Vue statique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.3 2.2.1 Diagramme des cas d’utilisation . . . . . . . . . . . . . . . . . . 13 2.2.2 Diagramme de classes . . . . . . . . . . . . . . . . . . . . . . . 20 Vue dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.3.1 2.4 FS-SFAX Diagrammes de séquence . . . . . . . . . . . . . . . . . . . . . 22 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Page 12 ANALYSE ET CONCEPTION 2.1 Introduction Après avoir fixé les besoins de notre projet, ce chapitre présente la conception. C’est une phase primordiale menant à optimiser le développement de toute application. En effet, elle formalise les étapes préliminaires du développement du futur système afin de rendre ce développement plus fidèle aux besoins. Ainsi, ce chapitre tient compte de deux vues du système : une vue statique exprimée par un diagramme de classes et des diagrammes de cas d’utilisation et une vue dynamique exprimée par des diagrammes de séquences. 2.2 Vue statique A ce niveau, nous exprimons les besoins fonctionnels dégagés précédemment sous la forme de diagrammes. Ces diagrammes, réalisés à l’aide du langage de modélisation UML, permettent de mieux structurer les interactions entre les utilisateurs et le système. Par conséquent, ils améliorent la compréhension du système. 2.2.1 Diagramme des cas d’utilisation En langage UML, les diagrammes de cas d’utilisation modélisent le comportement d’un système et permettent de capturer les exigences du système. Les diagrammes de cas d’utilisation décrivent les fonctions générales et la portée d’un système. Ces diagrammes identifient également les interactions entre le système et ses acteurs. Les cas d’utilisation et les acteurs dans les diagrammes de cas d’utilisation décrivent ce que le système fait et comment les acteurs l’utilisent. [6] 2.2.1.1 Identification des acteurs Un acteur est l’idéalisation d’un rôle joué par une personne externe, un processus ou une chose qui interagit avec un système. FS-SFAX Page 13 ANALYSE ET CONCEPTION Acteur Candidat Administrateur Super Administrateur Fonctionnalités Après d’être authentifié,il peut remplir sa demande de candidature et l’imprimer. Il consulte les statistiques, la liste des candidats et l’imprimer. Il gère les spécialités, les administrateurs et consulte les candidatures et les statistiques. TABLE 2.1 – Identification des acteurs 2.2.1.2 Diagramme de cas d’utilisation global Ayant capturé les besoins fonctionnels de notre application, nous sommes maintenant en mesure d’illustrer les fonctionnalités recueillies à travers un diagramme des cas d’utilisation global représenté par la figure 2.1. FS-SFAX Page 14 ANALYSE ET CONCEPTION F IGURE 2.1 – Diagramme de cas d’utilisation global 2.2.1.3 Diagramme de cas d’utilisation « Gérer Administrateurs » Une fois authentifier, un super-administrateur peut ajouter,supprimer ou modifier les rôles des administrateurs. FS-SFAX Page 15 ANALYSE ET CONCEPTION F IGURE 2.2 – Diagramme du cas d’utilisation « Gérer Administrateurs » Titre Gérer Administrateurs Acteur Super-Administrateur Description des enchaînements Pré-conditions : Super-Administrateur authentifié Scénario nominal : 1- Après authentification,Le Super-Administrateur demande la formulaire de la gestion des administrateur. 2- le Super-Administrateur remplit les champs. 3- le Super-administrateur valide en cliquant sur "créer /Supprimer /Modifier". 4- Le Système récapitule les informations saisies et fait la modification voulu. 5-Le Système informe tous les administrateur de cette modification. Scénario d’exception E1 : les champs sont erronés ou incomplets :Le formulaire est rechargé en affichant les erreurs . E2 : Ressource existante : Le formulaire est rechargé en affichant un message "Ressource existante" Post conditions : modifications ont été effectuées avec succès TABLE 2.2 – Description textuelle du cas d’utilisation « Gérer Administrateurs» FS-SFAX Page 16 ANALYSE ET CONCEPTION 2.2.1.4 Diagramme de cas d’utilisation « Gérer Spécialités » Une fois authentifier, un super-administrateur peut ajouter, supprimer des spécialités ou même modifier les conditions des spécialités. F IGURE 2.3 – Diagramme de cas d’utilisation « Gérer Spécialités » FS-SFAX Page 17 ANALYSE ET CONCEPTION Titre Gérer Spécialités Acteur Super-Administrateur Description des enchaînements Pré-conditions : Super-Administrateur authentifié Scénario nominal : 1- Après authentification, Le Super-Administrateur demande le formulaire de la gestion des Spécialités. 2- le Super-Administrateur remplit les champs. 3- le Super-administrateur valide en cliquant sur "Ajouter /Supprimer /Modifier". 4- Le système récapitule les informations saisies et réalise la modification désirée. 5-Le Système informe tous les administrateur de cette modification. Scénario d’exception E1 : les champs sont erronés ou incomplets Le formulaire est rechargé en affichant les erreurs. Post conditions : Modifications ont été effectuées avec succès TABLE 2.3 – Description textuelle du cas d’utilisation « Gérer Spécialités » 2.2.1.5 Diagramme de cas d’utilisation « Gérer Candidats » Une fois authentifié, un administrateur peut consulter la liste des candidats et l’imprimer. Il peut aussi rechercher un candidats et imprimer sa fiche de candidature. FS-SFAX Page 18 ANALYSE ET CONCEPTION F IGURE 2.4 – Diagramme de cas d’utilisation « Gérer Candidats » Titre Gérer Candidats Acteur Administrateur Description des enchaînements Pré-conditions : Administrateur authentifié Scénario nominal : 1- Après authentification, l’administrateur est dirigé vers la page de la gestion des Candidats. 2- L’administrateur clique sur la bouton de la fonctionnalité désiré . 3- Le Système récapitule les informations saisies et réalise les modifications nécessaires ou bien retourne les informations désirés. Scénario d’exception E1 : les champs sont erronés ou incomplets : Le formulaire est rechargé en affichant les erreurs. Post conditions : la tache désirée a été effectuée avec succès TABLE 2.4 – Description textuelle du cas d’utilisation « Gérer Candidats » FS-SFAX Page 19 ANALYSE ET CONCEPTION 2.2.2 Diagramme de classes Le diagramme de classes représente la structure statique d’un modèle, à savoir les éléments (classes et types), la structure interne des éléments et leurs relations les uns par rapport aux autres. Il constitue un élément très important de la modélisation car il permet essentiellement de : - Définir qu’elles seront les composantes du système. - Représenter l’organisation des données dans les systèmes d’information. - Structurer le travail de développement de manière très efficace. Ce diagramme est composé essentiellement de classes et de relations entre les classes qui constituent la future application et servent à décrire leurs attributs ainsi que leurs comportements comme le montre le figure 2.5 FS-SFAX Page 20 ANALYSE ET CONCEPTION F IGURE 2.5 – Diagramme de classes FS-SFAX Page 21 ANALYSE ET CONCEPTION 2.3 Vue dynamique Dans cette section, nous expliquons le dynamisme du futur système par le biais des diagrammes de séquences. 2.3.1 Diagrammes de séquence Les diagrammes de séquence présentent une solution populaire pour la modélisation dynamique. Ils se basent sur les lignes de vie, les processus et les objets qui vivent simultanément, et les messages qu’ils échangent entre eux pour réaliser un traitement. Ces diagrammes sont réalisés, à la fois, par les concepteurs du futur logiciel et les managers des entreprises pour analyser les besoins du nouveau système ou documenter un processus existant. Les diagrammes de séquence sont parfois appelés diagrammes d’événements ou scénarios d’événements.[8] 2.3.1.1 Diagrammes de séquence « S’authentifier » S’inscrire L’application envoie les données saisies par l’utilisateur dans le formulaire d’inscription au serveur. Le contrôleur de serveur vérifie la validation des données et effectue, ensuite, l’appel au service d’authentification qui vérifie l’existence du rôle et appelle le référentiel du candidat . Le référentiel de candidat envoie une requête à la base de données pour créer un nouvel utilisateur. Une vérification de l’existence d’un utilisateur se fait au niveau de la base de données . Si l’utilisateur n’existe pas, la base de données en créera un nouveau et un message de réussite sera envoyé à l’utilisateur. Sinon, un message d’erreur lui sera envoyé. FS-SFAX Page 22 ANALYSE ET CONCEPTION F IGURE 2.6 – Diagrammes de séquence « S’inscrire » S’identifier L’application client envoie l’identifiant et le mot de passe chiffré de l’utilisateur au serveur. Le contrôleur fait appel au service d’authentification qui fait de son tour appel au référentiel de candidat. Celui-ci envoie interroge la base de données pour trouver le candidat. Si le résultat retourné par la base de données n’est pas vide, c’est-à-dire le candidat existe, le service vérifie le mot de passe. En cas de succès, le candidat accède à son compte. Dans le cas où le CIN ou le mot de passe sont incorrects, un message d’erreur sera envoyé. FS-SFAX Page 23 ANALYSE ET CONCEPTION F IGURE 2.7 – Diagrammes de séquence « Login » FS-SFAX Page 24 ANALYSE ET CONCEPTION 2.3.1.2 Diagrammes de séquence «Accès au donnés protégées» L’application client envoie au serveur, une demande d’accès à des données protégées. Si le client a le droit d’y accéder alors le système autorise l’accès . Sinon, il sera bloqué et un message d’erreur sera renvoyé. F IGURE 2.8 – Diagrammes de séquence « Accès au donnés protégées » FS-SFAX Page 25 ANALYSE ET CONCEPTION 2.3.1.3 Diagrammes de séquence « Générer Spécialités » L’application envoie les données saisies par l’utilisateur dans le formulaire de candidature au serveur. Le contrôleur de serveur vérifie la validation des données puis,le il fait appel au référentiel de Spécialité. Ce dernier envoie une requête à la base de données pour générer et envoyer une liste de spécialité adéquate au profil du candidat. F IGURE 2.9 – Diagrammes de séquence « Générer Spécialités » 2.4 Conclusion Nous avons présenté, dans ce chapitre, la conception de la future application, d’une manière détaillée, à travers certains diagrammes UML. Nous présentons, dans le prochain chapitre,la phase de réalisation. FS-SFAX Page 26 Chapitre 3 Chapitre Réalisation Sommaire 3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.2 Choix architectural . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.3 3.4 3.5 FS-SFAX 3.2.1 Architecture applicative . . . . . . . . . . . . . . . . . . . . . . 28 3.2.2 Architecture technique . . . . . . . . . . . . . . . . . . . . . . . 31 Environnement du travail . . . . . . . . . . . . . . . . . . . . . . 32 3.3.1 Environnement logiciel . . . . . . . . . . . . . . . . . . . . . . 32 3.3.2 Technologies et langages de programmation utilisées . . . . . . 34 Interface de l’application . . . . . . . . . . . . . . . . . . . . . . 37 3.4.1 Interfaces relatives aux candidats . . . . . . . . . . . . . . . . . 37 3.4.2 Interfaces relatives aux administrateurs . . . . . . . . . . . . . 40 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Page 27 CHAPITRE RÉALISATION 3.1 Introduction Dans ce chapitre, nous spécifions les architectures applicative et technique adoptées pour la réalisation de notre application. Puis nous présentons l’environnement matériel et logiciel du projet. Ensuite, nous exposons la phase d’implantation. Par le biais de quelques prises d’écrans, nous expliquons le fonctionnement de notre application. 3.2 Choix architectural Avant d’entamer la conception et la réalisation de tout système informatique, il faut spécifier à l’avance l’architecture applicative et technique que nous allons suivre tout au long du développement. Notre choix architectural s’est basé sur les besoins exprimés précédemment afin de réaliser notre application autour d’une architecture évolutive et qui permet de supporter les objectifs stratégiques et les processus métiers de l’entreprise. 3.2.1 Architecture applicative 3.2.1.1 Choix d’architecture du web services Dans notre progiciel, nous avons utilisé l’architecture REST (Representational State Transfer) ou RESTful est un style d’architecture reposant sur l’utilisation du protocole HTTP en tirant partie de son enveloppe et de ses en-têtes sans ajout de sur-couche. Ce paradigme d’architecture se veut parfaitement stateless et laisse donc le soin au client de gérer les sessions. Il utilise des standards. En particulier : − URI comme syntaxe universelle pour adresser les ressources, − HTTP un protocole sans état (stateless) avec un nombre très limité d’opérations, − Des liens hypermedia dans des documents (X)HTML et XML pour représenter à la fois le contenu des informations et la transition entre états de l’application, FS-SFAX Page 28 CHAPITRE RÉALISATION − Les types MIME comme text/xml, text/html, image/jpeg, application/pdf, video/mpeg pour la représentation des ressources. Bien que l’API REST doive se conformer à ces critères, elle est toujours considérée plus facile à utiliser qu’un protocole prescrit comme SOAP (Simple Object Access Protocol), qui a des exigences spécifiques comme la messagerie XML, et la sécurité intégrée et la conformité des transactions qui le rendent plus lent et plus lourd. En revanche, REST est un ensemble de directives qui peuvent être mises en œuvre selon les besoins, rendant les API REST plus rapides et plus légères. F IGURE 3.1 – L’architecture REST 3.2.1.2 Choix de la stratégie d’échange de données HTTP est un protocole "sans état", dont le sens où chaque appel http effectué vers un serveur est comme un nouvel appel, sans mémoire ni "état" des appels précédents. Dans les applications, nous devons généralement maintenir des "sessions" de connexion, de sorte qu’une fois l’utilisateur se connecte, il peut continuer à accéder à différentes parties de l’application sans avoir à se connecter (c’est-à-dire à S’authentifier) encore et encore pour chaque requête HTTP suivante effectuée. au serveur. Quant à la gestion de session, il existe principalement deux approches différentes : − Approche basée sur les sessions ou les cookies − Approche basée sur JWT (JSON Web Tokens) FS-SFAX Page 29 CHAPITRE RÉALISATION Ces deux approches sont fondamentalement distinctes et complètes pour la gestion des sessions. Dans l’annexe A.1, nous comparerons et opposerons les deux approches. 3.2.1.3 Choix de technique de stockage des mots de passes Nous savons que le stockage des mots de passe en clair ne doit jamais être une option. Au lieu de cela, nous voulons fournir une voie à sens unique (one-way road) vers la sécurité en hachant les mots de passe. Cependant, nous savons également que le hachage seul n’est pas suffisant pour atténuer les attaques plus complexes telles que les tables arc-en-ciel(rainbow tables)[7]. Une meilleure façon de stocker les mots de passe consiste à ajouter le salage (Salting) [11] au processus de hachage ( ajouter des données aléatoires supplémentaires à l’entrée d’une fonction de hachage qui rend chaque hachage de mot de passe unique.) La plate-forme d’authentification idéale intègre ces deux processus, le hachage et Salage. Il existe de nombreuses fonctions cryptographiques telles que la famille SHA2 et la famille SHA-3. Les familles SHA nt été conçues pour être rapides en termes de calcul. La rapidité avec laquelle une fonction cryptographique peut calculer un hachage a une incidence immédiate et significative sur la sécurité du mot de passe. Des calculs plus rapides signifient des attaques par brute-force plus rapides, par exemple. Le matériel moderne sous la forme de CPU et de GPU pourrait calculer des millions, voire des milliards, de hachages SHA-256 par seconde par rapport à une base de données volée. Au lieu d’une fonction rapide, nous avons besoin d’une fonction lente à hacher les mots de passe pour arrêter presque les attaquants. Nous voulons également que cette fonction soit adaptative afin que nous puissions compenser le futur hardware plus rapide en pouvant faire en sorte que la fonction s’exécute de plus en plus lentement au fil du temps. Dans le présent projet, l’intégrité et la sécurité des données sont l’une de nos plus hautes priorités. Nous utilisons l’algorithme bcrypt pour hacher et saler les mots de passe en toute sécurité. bcrypt permet de construire une plate-forme de sécurité des mots de passe qui peut évoluer parallèlement à la technologie matérielle. Ceci pour se prémunir contre les menaces FS-SFAX Page 30 CHAPITRE RÉALISATION que l’avenir peut apporter, telles que les attaquants ayant la puissance de calcul pour déchiffrer les mots de passe deux fois plus vite. Nous découvrons dans l’annexe A.2, la conception et les spécifications qui font de bcrypt une norme de sécurité cryptographique. 3.2.2 Architecture technique Nous présentons dans la figure 3.2 l’architecture technique de notre projet F IGURE 3.2 – Architecture technique On se basant sur l’architecture trois-tiers, nous allons développer notre système qui doit être divisé en trois couches différentes : − Couche présentation : Elle correspond à la partie visible et interactive de l’application. − Couche applicative ou Couche métier : Elle correspond à la partie fonctionnelle de l’application. C’est elle qui implémente la « logique », et qui décrit les opérations que l’application opère sur les données en fonction des requêtes des utilisateurs. − Couche donnée : Elle consiste en la partie gérant l’accès aux de données du système. Ces données peuvent être propres au système, ou gérées par un autre système. FS-SFAX Page 31 CHAPITRE RÉALISATION 3.3 Environnement du travail Dans cette section, nous présentons les environnements logiciels utilisés dans le cadre de ce projet. 3.3.1 Environnement logiciel Pour réaliser notre projet, nous avons eu recours à différents logiciels que nous allons citer dans le tableau 3.1 Environnement logiciel Pourquoi je l’ai utilisé ? Visual Studio Code C’est un éditeur de code libre et gratuit, léger, mais puissant. Il est livré avec un support intégré pour JavaScript, TypeScript et Node.js et il possède un écosystème riche en extensions. Overleaf C’est une plateforme en ligne gratuite permettant d’éditer du texte en LATEX sans aucun téléchargement d’application. En outre, elle offre la possibilité de rédiger des documents de manière collaborative. FS-SFAX Page 32 CHAPITRE RÉALISATION Eclipse IDE Eclipse donne accès à des fonctionnalités avancées, comme un éditeur de code intégré, un débogueur et un compilateur, ainsi que le support intégré de la gestion de gros projets et le partage des projets au sein d’une équipe. Eclipse fournit également la prédiction de texte et la détection d’erreurs de syntaxe pendant que vous codez dans l’éditeur. MySQL Workbench C’est un logiciel de gestion et d’administration de bases de données MySQL. Via une interface graphique intuitive, il permet, entre autres, de créer, modifier ou supprimer des tables, des comptes utilisateurs, et d’effectuer toutes les opérations inhérentes à la gestion d’une base de données. TABLE 3.1 – Environnement logiciel FS-SFAX Page 33 CHAPITRE RÉALISATION 3.3.2 Technologies et langages de programmation utilisées Technologies Pourquoi je l’ai utilisées ? Angular Framework open source écrit en JavaScript,qui m’a permet de créer une applications Web, plus particulièrement ce qu’on appelle des " Single Page Applications " : une applications web accessibles via une page web unique qui permet de fluidifier l’expérience utilisateur et d’éviter les chargements de pages à chaque nouvelle action. Spring boot Pour faire simple, Spring Boot est un framework de développement JAVA qui m’a permet d’interagir avec une base de données,traiter des requêtes HTTP et écrire des réponses HTTP,Gérer la sécurité de l’application.. MySQL Système de gestion de bases de données relationnelles SQL open source stocker, utilisé pour stocker,récupérer et gérer des données. FS-SFAX Page 34 CHAPITRE RÉALISATION Angular CLI C’est une Command Line Interface (interface en ligne de commande, en français) développée par les équipes d’Angular même. Cette CLI permet de créer des projets dans lesquels la CLI pourra ajouter des fichiers et plus exactement des entités Angular. Il sera possible d’ajouter des modules, des composants, des services ou bien des directives en une ligne de commande. Lombok rend Java plus cool à nouveau !,Il fournit un ensemble d’annotations utiles pour éliminer une grande quantité de code standard de vos classes Java. Dans le meilleur des cas, cinq caractères seulement peuvent remplacer des centaines de lignes de code. Le résultat est de classes Java propres, concises et faciles à gérer.[?] Node Package Manager C’est un outil de gestion de librairie JavaScript, je l’ai utilisé pour installer, mettre à jour et enlever des librairies. FS-SFAX Page 35 CHAPITRE RÉALISATION iText Bibliothèque Java qui permet de créer, convertir et manipuler des documents PDF. Ng2-charts Bibliothèque JavaScript open-source disponible via npm. Il m’a aidé à créer des graphiques accrocheurs dans Angular à l’aide de Chart.js (Partie Statistique ). Apache Maven C’est un outil de gestion et d’automatisation de production des projets logiciels Java, utilisé pour gérer des dépendances vis-à-vis des bibliothèques nécessaires au projet. Spring Data(JPA) Framework ORM offre une abstraction qui m’a permet de manipuler uniquement des objets sans avoir besoin (ou quasiment pas besoin) de faire du SQL,le framework va générer les requêtes SQL et être capable d’effectuer de nombreuses opérations sur la base de données, en fonction du code objet que j’ai implémenté. Bootstrap framework qui permet de créer un site facilement, avec un design responsive, qui s’adapte à tout type d’écran. TABLE 3.2 – Technologies et langages de programmation utilisées FS-SFAX Page 36 CHAPITRE RÉALISATION 3.4 Interface de l’application Dans cette section, nous présentons quelques interfaces graphiques de notre application. 3.4.1 Interfaces relatives aux candidats Interface d’authentification : La figure 3.3 présente le point d’entrée de l’application. A travers cette interface un nouvel utilisateur peut s’inscrire alors qu’un candidat peut accéder à son espace privé. Il suffit sélectionner son choix et de saisir son numéro de carte d’identité nationale (CIN), son mot de passe et sa délégation, il sera diriger vers l’interface de candidature. F IGURE 3.3 – Interface d’authentification FS-SFAX Page 37 CHAPITRE RÉALISATION Interface de candidature La figure 3.4 présente l’interface de Candidature. Le candidat doit remplir les champs vides pour qu’il puisse passer vers l’interface de Spécialités 3.5. F IGURE 3.4 – Interface de candidature FS-SFAX Page 38 CHAPITRE RÉALISATION Interface de spécialités L’interface de Spécialités (figure 3.5) offre le choix au candidat entre une ou deux spécialités avant de passer vers l’interface de fiche de candidature. F IGURE 3.5 – Interface de Spécialités Fiche de candidature La figure 3.6 présente l’interface de Candidature. Le candidat peut télécharger sa fiche de candidature sous la forme pdf en cliquant sur télécharger. F IGURE 3.6 – Fiche de candidature FS-SFAX Page 39 CHAPITRE RÉALISATION 3.4.2 Interfaces relatives aux administrateurs Interface d’authentification La figure 3.7 présente l’interface d’authentification. C’est le point d’entrée pour les administrateurs. Ainsi, un administrateur saisit son matricule et son mot de passe pour qu’il soit diriger vers l’interface Menu Admin. F IGURE 3.7 – Interface d’authentification Interface de gestion de spécialités La figure 3.8 présente l’interface de gestion de spécialités. L’administrateur peut modifier, ajouter ou supprimer des spécialités à partir de cette interface. FS-SFAX Page 40 CHAPITRE RÉALISATION F IGURE 3.8 – Interface de gestion de spécialités Interface de gestion des administrateurs La figure 3.9 présente l’interface de gestion des administrateurs. Le super administrateur peut ajouter, supprimer ou modifier les rôles des autres administrateurs à partir de cette interface. F IGURE 3.9 – Interface de gestion des administrateurs Interface de gestion des candidats La figure 3.10 présente l’interface de gestion des candidats. L’administrateur peut imprimer la liste des candidats ou imprimer les données relatives à un candidat à partir de cette interface. FS-SFAX Page 41 CHAPITRE RÉALISATION F IGURE 3.10 – Interface de gestion des candidats Interface des statistiques La figure 3.11 présente l’interface des statistiques. L’administrateur peut consulter les statistiques à partir de cette interface. FS-SFAX Page 42 CHAPITRE RÉALISATION FS-SFAX F IGURE 3.11 – Interface des statistiques Page 43 CHAPITRE RÉALISATION Interface des notifications : La figure 3.12 présente l’interface des notifications. L’administrateur peut consulter les notifications à partir de cette interface. F IGURE 3.12 – Visual Studio Code 3.5 Conclusion Dans ce chapitre, nous avons présenté l’architecture de notre application. Aussi, nous avons détaillé les principales interfaces. FS-SFAX Page 44 CONCLUSION GÉNÉRALE Ce rapport résume notre travail au sein de la Compagnie des Phosphates de Gafsa dans le cadre du stage de fin d’études pour l’obtention du diplôme de licence en science informatique. La société nous a proposé de développer une application Web pour la gestion de recrutement dont le but est d’automatiser le processus de recrutement. La première étape de notre stage était l’étude de l’existant. Cette étude nous a aidé pour comprendre de plus en plus la problématique.Non seulement, elle nous a permis définir exactement les différents besoins fonctionnels et non fonctionnels du futur système. Comme pour tout application, nous avons réalisé une conception en détaillée de la solution retenue afin de faciliter l’étape d’implantation. Pour atteindre nos objectif, nous avons utilisé des plateformes et des technologies d’actualité. Ce stage m’a permis de renforcer de nombreux concepts comme la gestion efficace du temps et les compétences en communication. Bien sûr, m’a permis d’apprendre et perfectionner mes capacités à travers les technologies utilisées le long du stage, tel que Angular, Spring Boot et MySQL. Notre application adopte la notion d’un site web mono-page (single-page application) avec chargement dynamique des composants. Nous avons visé à avoir une application web facile à utiliser et ayant une interface simple et ergonomique. D’autre part, j’ estime, que le travail réalisé la long de ce stage, m’a permis d’enrichir mon expérience et de renforcer mes chances de succès dans la vie professionnelle. J’ai eu l’occasion, durant ce stage, de mettre en valeur ce que j’ai appris au cours de mes études dans le cadre de cette formation. j’espère également que ce projet m’a donné FS-SFAX Page 45 CONCLUSION GÉNÉRALE suffisamment de compétences et d’expérience pour me permettre de percer dans la vie professionnelle en toute sérénité. Comme dernier ajout, bien que l’application développée réponde aux besoins spécifiés, certaines perspectives peuvent être proposées : − Les candidats peuvent ajouter les documents à travers le formulaire au lieu de les apporter le jour d’entretien. − Au lieu de vérifier les document significatifs des candidats à la main, on peut implémenter un système de vérification à l’aide de l’intelligence artificiel. − L’implémentation d’un service qui calcule des scores pour les candidats à l’égard d’un barème spécifié par la compagnie. FS-SFAX Page 46 BIBLIOGRAPHIE [1] Chiffre d’affaire 2012 CPG. [en ligne].Disponible sur : https ://fr.wikipedia.org/wiki/Compagnie_des_phosphates_de_Gafsa [2] Historique. Historique CPG [en ligne]. Disponible sur : http ://cpg.com.tn/#/historique [3] Extraction CPG. USENIX. Disponible sur : https ://fr.wikipedia.org/wiki/Compagnie_des_phosphates_de_Gafsa [4] Production. Disponible sur : http ://cpg.com.tn/#/production [5] Commercialisation. Disponible sur : http ://cpg.com.tn/#/commercialisation [6] Diagrammes de cas d’utilisation . Disponible sur : https ://www.ibm.com/docs/fr/rational-soft-arch/9.5 ?topic=diagrams-use-case [7] Rainbow table .[en ligne]. Disponible sur : https ://en.wikipedia.org/wiki/Rainbow_table [8] UML. Qu’est-ce qu’un diagramme de séquence UML . Disponible sur : https ://www.lucidchart.com/pages/fr/diagramme-de-sequence-uml [9] Blowfish. Blowfish [en ligne]. Disponible sur : https ://https ://en.wikipedia.org/wiki/Blowfish_(cipher) [10] Cryptographic software. USENIX. Disponible sur : https ://www.usenix.org/legacy/events/usenix99/provos/provos_html/node1.html [11] Salage (cryptographie) . Disponible sur : https ://fr.wikipedia.org/wiki/Salage_(cryptographie) FS-SFAX Page 47 BIBLIOGRAPHIE [12] Hashing in Action : Understanding bcrypt. bcrypt. Disponible sur : https ://auth0.com/blog/hashing-in-action-understanding-bcrypt/ [13] Bcrypt and Password Security - An Introduction. Disponible sur : https ://www.youtube.com/watch ?v=O6cmuiTBZVs [14] Bcrypt Tutorial in Nodejs | Understand Hashing, Salt, Rainbow Tables and Bcrypt Disponible sur : https ://www.youtube.com/watch ?v=ro1WmoP4CZs FS-SFAX Page 48 ANNEXES A.1 Session Cookies vs. JSON Web tokens A.1.1 Session Cookies vs. JSON Web tokens — L’approche 1. Après une authentification réussie, (en cas d’approche session-cookie) le serveur génère un "cookie", OU (en cas d’approche JWT) le serveur génère un "accessToken" Une fois que l’utilisateur est "authentifié", c’est-à-dire le serveur vérifie que le nom d’utilisateur/mot de passe correspond à un de la base de données . Approche basée sur les cookies de session : 1. Le serveur génère un "SessionId" (le signe avec une "clé secrète"), et (a) enregistre le SessionId dans une SessionDB, et (b) envoie un cookie avec le sessionId au navigateur (côté client). 2. Le navigateur (côté client) reçoit le "cookie" dans la réponse du serveur et l’enregistre dans le stockage "cookie". 3. Le navigateur inclut alors le "cookie" dans chaque demande ultérieure au serveur. FS-SFAX Page 49 ANNEXES F IGURE A.1 – Approche basée sur les cookies de session Approche basée sur les JWT JSON Web Token : 1. Le serveur a généré un "accessToken", cryptant le "userId" et "expiresIn", avec l’ ACCESS_TOKEN_SECRET, et envoyez le "accessToken" au navigateur (côté client). 2. Le navigateur (côté client) reçoit le "accessToken" et l’enregistre côté client. 3. Le "accessToken" est inclus dans chaque demande ultérieure au serveur. F IGURE A.2 – Approche basée sur les JWT JSON Web Token FS-SFAX Page 50 ANNEXES Noter : - Dans l’approche JWT, l’accessToken lui-même contient le "userId" chiffré et l’accessToken n’est enregistré dans aucune sessionDB. Étant donné qu’aucune base de données n’est requise dans le cas de "l’approche jwt", elle est parfois appelée une approche "sans état" de la gestion des sessions, car aucun "état" ou "session" n’est enregistré dans une base de données (elle est contenue dans le jeton JWT lui-même ). Les jetons JWT sont parfois appelés « Bearer Tokens », car toutes les informations sur l’utilisateur, c’est-à-dire "bearer" est contenu dans le jeton. Dans le cas de l’approche basée sur les cookies de session, le sessionId ne contient aucune information sur l’ID utilisateur, mais est une chaîne aléatoire générée et signée par la "clé secrète". Le sessionId est ensuite enregistré dans une sessionDB. La sessionDB est une table de base de données qui mappe(maps) "sessionId" "userId". Étant donné que les identifiants de session sont stockés dans sessionDB, "l’approche des cookies de session" est parfois appelée une approche stateful "avec état" de la gestion des sessions, puisque "l’état" ou la "session" est enregistré dans une base de données. Dans les deux approches, le côté client doit enregistrer en toute sécurité le « cookie » ou le « jeton jwt ». La principale différence est que dans le cas de l’approche JWT, le serveur n’a pas besoin de maintenir une base de données de sessionId pour la recherche. 2. Pour maintenir les sessions, chaque demande ultérieure au serveur (en cas d’approche de cookie de session) doit inclure le "cookie (sessionId)", OU (en cas d’approche JWT) doit inclure le "accessToken" Maintenant que l’utilisateur est authentifié (et que le côté client a soit un "cookie" OU un "accessToken"), disons que l’utilisateur connecté veut un tas d’actions comme modifier ses données ou les afficher. chaque demande faite au serveur, le serveur fait ce qui suit -Étapes de l’approche basée sur les cookies de session, 1. Récupérez le "sessionId" de la requête "cookie". 2. Vérifiez l’intégrité de "sessionId" à l’aide de la "clé secrète". FS-SFAX Page 51 ANNEXES Ensuite, recherchez le "sessionId" dans la sessionDB sur le serveur et obtenez le "userId". 3. Recherchez le "userId" dans CandidatDB pour modifier des informations pour cet userId, ou afficher ses informations . -Étapes de l’approche basée sur JWT 1. Obtenez le "accessToken" à partir de l’"en-tête" de la requête. 2. Décryptez le "accessToken", c’est-à-dire le JWT, en utilisant ACCESS_TOKEN_SECRET et obtenez le "userId" (il n’y a pas de recherche de base de données). 3. Recherchez le "userId" dans CandidatDB pour modifier des informations pour cet userId, ou afficher ses informations . -Notez donc que dans le cas de l’approche des cookies de session, le serveur devrait maintenir une liste de toutes les sessions dans sessionsDB. Notez également que cela signifie qu’il y aurait une recherche de base de données pour obtenir le userId . Les recherches de base de données sont relativement plus lentes que l’action de décryptage JWT. Dans le cas de l’approche JWT, étant donné que le jeton JWT lui-même contient les informations (cryptées) de l’ID utilisateur, nous n’avons pas besoin d’effectuer une "recherche" pour obtenir l’ID utilisateur. Au moment où le serveur déchiffre le jeton JWT, il obtient l’ID utilisateur. (REMARQUE : seuls les serveurs qui ont le ACCESS_TOKEN_SECRET partagé peuvent déchiffrer le jeton JWT). Cela permet à plusieurs serveurs d’être mis à l’échelle séparément et sans avoir besoin d’avoir une copie actuelle de la base de données sessionId sur tous les serveurs, ou que tous les serveurs accèdent à une base de données sessionDB commune. Tant qu’un serveur a le même ACCESS_TOKEN_SECRET qui a été utilisé pour générer le jeton JWT, ce serveur peut déchiffrer le jeton JWT et obtenir l’ID utilisateur. FS-SFAX Page 52 ANNEXES A.1.2 Cookies de session vs JSON Web tokens - Avantages et inconvénients Approche des cookies de session : Avantages Lors de la déconnexion, puisque le sessionId est supprimé de la base de données, nous avons une déconnexion de précision, c’est-à-dire que la déconnexion se produit au moment où le sessionId est supprimé de la sessionDB. Inconvénients -Nécessite une recherche de base de données supplémentaire dans la table sessionId pour obtenir l’ID utilisateur, les recherches de base de données sont relativement plus lentes que l’action de décryptage JWT. -Les serveurs individuels ne peuvent pas être mis à l’échelle séparément car ils devraient partager la base de données de session. Approche JWT (JSON Web tokens) Avantages Étant donné que l’ID utilisateur est obtenu en déchiffrant le jeton JWT, aucun appel de base de données n’est requis pour obtenir l’ID utilisateur, donc cette approche est plus rapide. -Les serveurs peuvent être mis à l’échelle séparément, sans avoir besoin de partager sessionDB. Cela fait de l’approche JWT une excellente option pour l’architecture de micro-services. -Le même jeton peut être utilisé pour s’authentifier sur différents serveurs (tant que le serveur a le access_token_secret), sans avoir besoin de partager sessionDB, -Cela permet également un serveur d’authentification complètement séparé, qui peut être seul responsable de l’émission de "accessTokens" et de "refreshTokens". Inconvénients -Étant donné que les jetons JWT ne peuvent pas être «invalide» (sans les conserver dans une base de données partagée), dans l’approche JWT, la précision de la longueur de déconnexion est définie par la longueur d’expiration du jeton d’accès. Cependant, la durée de vie "access_token" FS-SFAX Page 53 ANNEXES peut être courte (généralement 10 à 15 minutes), de sorte que les jetons sont automatiquement "invalides" après la durée. -Surcharge de données :La taille globale d’un JWT est volumineux ce qui le rend plus long chaque fois que plus de données y sont ajoutées. Ainsi, si vous ajoutez plus d’informations dans le jeton, cela aura un impact sur la vitesse de chargement globale et entravera ainsi l’expérience utilisateur. Cette situation peut être corrigée si les bonnes pratiques de développement sont suivies et que seulement les données essentielles sont ajoutées au JWT. A.1.3 Conclusion La gestion de session dans le projet peut être implémentée soit en utilisant l’approche basée sur "Session-Cookie" (et est encore utilisée dans de nombreuses applications Web), mais j’ai choisi l’approche JWT (qui est une approche plus récente et est fréquemment utilisée dans les applications mobiles et Web ). FS-SFAX Page 54 ANNEXES A.2 Bcrypt : une norme de sécurité cryptographique A.2.1 Motivation La technologie évolue rapidement. L’augmentation de la vitesse et de la puissance des ordinateurs peut profiter à la fois aux ingénieurs qui tentent de créer des systèmes logiciels et aux attaquants qui tentent de les exploiter. Certains logiciels cryptographiques ne sont pas conçus pour évoluer avec la puissance de calcul. Comme expliqué précédemment, la sécurité du mot de passe dépend de la rapidité avec laquelle la fonction de hachage cryptographique sélectionnée peut calculer le hachage du mot de passe. Une fonction rapide s’exécuterait plus rapidement lors de l’exécution dans un matériel beaucoup plus puissant. Ce vecteur d’attaque était bien compris par les cryptographes dans les années 90 et un algorithme du nom de Bcrypt répondant à ces spécifications de conception a été présenté en 1999 à USENIX. Apprenons comment Bcrypt nous permet de créer des systèmes de stockage de mots de passe solides. A.2.2 Qu’est-ce que Bcrypt ? Bcrypt a été conçu par Niels Provos et David Mazières sur la base du chiffrement Blowfish cipher[9] b pour Blowfish et crypt pour le nom de la fonction de hachage utilisée par le système de mot de passe UNIX. Crypt est un excellent exemple d’incapacité à s’adapter aux changements technologiques. Selon USENIX[10], en 1976, crypt pouvait hacher moins de 4 mots de passe par seconde. Étant donné que les attaquants doivent trouver la pré-image d’un hachage afin de l’inverser, cela a permis à l’équipe UNIX de se sentir très à l’aise quant à la force de la crypte. Cependant, 20 ans plus tard, un ordinateur rapide avec des logiciels et du matériel optimisés était capable de hacher 200 000 mots de passe par seconde en utilisant cette fonction ! FS-SFAX Page 55 ANNEXES Intrinsèquement, un attaquant pourrait alors mener une attaque complète par dictionnaire avec une efficacité extrême. Ainsi, une cryptographie qui était exponentielle-ment plus difficile à casser à mesure que le matériel devenait plus rapide était nécessaire pour entraver les avantages de vitesse que les attaquants pouvaient obtenir du matériel. Le chiffrement Blowfish est un chiffrement par bloc rapide sauf en cas de changement de clés, les paramètres qui établissent la sortie fonctionnelle d’un algorithme cryptographique : chaque nouvelle clé nécessite le pré-traitement équivalent au chiffrement d’environ 4 kilo-octets de texte, ce qui est considéré comme très lent par rapport aux autres chiffrements par blocs. Ce changement de clé lent est bénéfique pour les méthodes de hachage de mot de passe telles que Bcrypt, car la demande de calcul supplémentaire aide à protéger contre les attaques par dictionnaire et par brute-force en ralentissant l’attaque. Bcrypt est capable d’atténuer ces types d’attaques en combinant la phase de configuration de clé coûteuse de Blowfish avec un nombre variable d’itérations pour augmenter la charge de travail et la durée des calculs de hachage. son plus grand avantage est que, au fil du temps, le nombre d’itérations peut être augmenté pour le ralentir, ce qui permet à Bcrypt de s’adapter à la puissance de calcul. Nous pouvons réduire les avantages que les attaquants peuvent tirer d’un matériel plus rapide en augmentant le nombre d’itérations pour ralentir Bcrypt . Bcrypt a été conçu pour le hachage de mot de passe, c’est donc un algorithme lent. C’est bon pour le hachage de mot de passe car il réduit le nombre de mots de passe par seconde qu’un attaquant pourrait hacher. Un autre avantage de Bcrypt est qu’il nécessite un Salt par défaut. Bcrypt vous oblige à suivre les meilleures pratiques de sécurité car il nécessite un Salt dans le cadre du processus de hachage. Le hachage combiné avec des salts vous protège contre les attaques de rainbow table ! A.2.3 Comment fonctionne Bcrypt ? Provos et Mazières, les concepteurs de Bcrypt , ont utilisé la phase de configuration de clé coûteuse du chiffrement Blowfish pour développer un nouvel algorithme de configuration de clé pour Blowfish nommé "eksblowfish", qui signifie "expensive key schedule Blowfish". FS-SFAX Page 56 ANNEXES Qu’est-ce que la "configuration de la clé" ? Selon Ian Howson, ingénieur logiciel chez NVIDIA : "La plupart des chiffrements consistent en une phase de configuration de clé et une phase de fonctionnement. Lors de la configuration de la clé, l’état interne est initialisé. Pendant le fonctionnement, le texte chiffré ou le texte en clair d’entrée est chiffré ou déchiffré. Configuration de la clé uniquement doit être effectué une fois pour chaque clé utilisée". Bcrypt s’exécute en deux phases : Dans la première phase, EksBlowfishSetup est appelé avec le coût, le salt et le mot de passe, pour initialiser l’état d’eksblowfish. La majeure partie du temps de Bcrypt est consacrée à la planification coûteuse des clés. Ensuite, la valeur 192 bits “OrpheanBeholderScryDoubt” est chiffrée 64 fois en utilisant eksblowfish en mode ECB avec l’état de la phase précédente. La sortie est le coût et le sel 128 bits concaténés avec le résultat de la boucle de chiffrement. F IGURE A.3 – Algorithme de Bcrypt Le hachage résultant est préfixé par $2a$, $2y$ ou $2b$. Les préfixes sont ajoutés pour indiquer l’utilisation de Bcrypt et sa version. Le résultat de Bcrypt atteint les propriétés de base d’une fonction de mot de passe sécurisée telles que définies par ses concepteurs : Il est résistant aux pré-images. -Le Salt est suffisamment grand pour atténuer les attaques de pré-calcul, telles que les tables arc-en-ciel. -Il a un coût adaptable. Les concepteurs de Bcrypt FS-SFAX Page 57 ANNEXES pensent que la fonction conservera sa force et sa valeur pendant de nombreuses années. Sa conception mathématique rassure les cryptographes sur sa résistance aux attaques. En ce qui concerne le coût adaptable, nous pourrions dire que Bcrypt est une fonction de hachage adaptative car nous sommes en mesure d’augmenter le nombre d’itérations effectuées en fonction d’un facteur clé passé, le coût. Cette adaptabilité est ce qui nous permet de compenser l’augmentation de la puissance des ordinateurs, et c’est pourquoi on a choisit de l’utiliser pour hacher les mot de passe. [12][13][14] FS-SFAX Page 58 C ONCEPTION ET RÉALISATION D ’ UNE APPLICATION W EB POUR LA G ESTION DE R ECRUTEMENT Raddaoui Yassine Résumé : Dans le cadre de stage de fin d’études, au sein de la Compagnie des phosphates de Gafsa (CPG), ce rapport présente la conception et le développement d’une application web pour la gestion de recrutement. Ce projet vise à automatiser le processus de recrutements au sein de la CPG. Mots clés : recrutement, application web, Spring boot , Angular Abstract : As part of the end-of-studies internship, within the Compagnie des phosphates de Gafsa (CPG), this report presents the design and development of a web application for recruitment management. This project aims to automate the recruitment process within the CPG. Mots clés : recruitment, Web application, Spring boot , Angular : jÊÓ ®¯ A®¯ é»Qå ú¯ ÉÒªËAK ð ,h QjJË@ ¨ðQåÓ PA£@ ú¯ QK ñ¢ð ÕæÒ QK Q® JË@ @ Yë QªK é . . Ë@ Ég@X ­J£ñJË@ éJ ÊÔ« éJÖß @ úÍ@ ¨ðQåÖÏ @ @ Yë ¬YîE . ­J£ñJË@ èP@XB IK ð J J¢ . é»Qå . . Angular , Spring boot , I . K ð JJ.¢ , ­J£ñK : iJKA®ÖÏ @