Académique Documents
Professionnel Documents
Culture Documents
INGENIEURS EN INFORMATIQUE
Intitulé du stage
Conception et mise en place d'un système d'authentification sécurisé pour
ADDIXO Smart Factory
Réalisé par
Nesrine OBEY
Entreprise d’accueil
Encadrant Entreprise
Mme Ferjania Ben Aissa
Encadrant SESAME
Mme Hajer Amdouni
Année Universitaire
2022-2023
Dédicace
“
”
- Nesrine
I
Remerciements
II
Résumé
Mots clés :
III
Abstract
Keywords :
IV
Table des matières
Dédicace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I
Remerciements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . II
Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . III
Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IV
Introduction générale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1 Initialisation du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Organisme d’accueil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 Secteurs d’activités . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.2 Organigramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Présentation du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.1 Addixo Smart Factory . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.2 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.3 Solution proposée . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.4 Concept de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4 Choix méthodologique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.1 Les méthodes agiles . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.2 Le Framework Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
V
Table des matières
Conclusion et perspectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Annexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
VI
Table des figures
VII
Liste des tableaux
VIII
Liste des algorithmes
IX
Liste des sigles et acronymes
X
Introduction générale
L’industrie 4.0 a permis une connectivité aisée entre les machines de production et les
systèmes d’information ainsi, un contrôle permanent. Dans cette perspective, beaucoup
des concepts ont vu la lumière du jour, et le « Smart Factory » est bien un exemple.
« Smart Factory » signifie une usine de fabrication digitalisée à l’aide des machines de
fabrication connectées entre eux et qui sont en contrôle continu grâce à des logiciels. Dans
ce sens, le groupe « ADDIXO » qui est spécialisé dans l’industrie 4.0 veut mettre à jour son
logiciel « ADDIXO Smart Factory » avec un nouveau module pour une authentification
plus sécurisé et une gestion des roles et des permissions centralisées en externe . C’est
dans ce contexte que la société « ADDIXO » nous a confié les tâches de conception et
l’implémentation d’une solution qui donne une sécurité solide . Cette solution vise alors
à aider l’utilisateur à centraliser la gestion des roles et des permissions . Afin d’atteindre
ce but, plusieurs étapes ont été effectuées et présentées dans ce rapport.
1
Chapitre 1
Initialisation du projet
2
Chapitre 1. Initialisation du projet
1.1 Introduction
Dans ce chapitre, nous exposons le cadre général de notre projet. Premièrement, nous
décrirons l’organisme d’accueil et nous présentons ses secteurs d’activité, et puis, nous
dégageons les imperfections et limites du système actuel. Pour le but de montrer la solution
proposée. En guise de clôture, nous exposons la méthodologie adoptée pour la gestion de
notre projet.
1.2.2 Organigramme
La figure 1.1 présente l’organigramme de l’entreprise ADDIXO :
3
Chapitre 1. Initialisation du projet
Pour la réalisation de notre projet de fin d’études, nous avons intégré l’équipe « Smart
Factory » qui fait partie du département « Digital Manufacturing ». « Smart Factory » est
une équipe responsable du développement des solutions logicielles primordiales pour la
numérisation des usines. Ce sont des solutions qui traitent les processus de production par
la collecte des données de fabrication des usines en temps réel. Ces données sont utilisées,
par la suite, pour des divers buts, tels que : le contrôle et le suivi de l’état et de qualité
de production, et la gestion de maintenance et de traçabilité.
« Smart Factory » travaille actuellement sur le développement et l’amélioration d’un
logiciel appelé « ADDIXO Smart Factory », une ”technologie conçue nativement pour la
digitalisation des processus de production dans l’usine” [3].
4
Chapitre 1. Initialisation du projet
production.
MES est un système apparu avec le surgissement de l’industrie 4.0, qui permet le suivit
et la gestion des productions dans les usines. Celui-ci a un but principal : la supervision
des machines de fabrication en fournissant une traçabilité parfaite sur les informations de
production [4]. En fait, il y avait continuellement des difficultés de gérer des données qui
interviennent à partir des ateliers de production et qui doit interagir avec un ERP, d’où
la complexité de maintenir ”la continuité entre les données de l’ERP et les opérations en
atelier” [4]. De ce fait, un logiciel MES agit à la fois, comme étant un médiateur entre
l’ERP et l’atelier mais aussi comme un chef d’orchestre, puisqu’il faut y avoir un suivi
permanent ”de la chaîne numérique depuis la création de l’ordre de fabrication (OF)
jusqu’à l’obtention du produit final” [4]. La figure 1.2 [5] illustre le rôle du logiciel MES :
« ADDIXO Smart Factory » est donc une solution MES pour la numérisation des pro-
5
Chapitre 1. Initialisation du projet
1.3.2 Problématique
Dans le monde de l’informatique moderne, la sécurisation des applications est devenue
un enjeu majeur. « ADDIXO Smart Factory » agit comme étant une solution moderne
6
Chapitre 1. Initialisation du projet
pour l’industrie 4.0, nous remarquons l’absence des fonctionnalités qui peuvent assurer la
sécurité des systèmes d’authentification et de gestion des accès qui jouent un rôle crucial
dans la protection des données sensibles et la prévention des attaques malveillantes. Dans
ce contexte, l’utilisation de solutions d’authentification centralisée est de plus en plus
répandue.
Pour une application dédiée pour l’industrie la sécurité totale est exigé . De ce fait, la
solution est d’implémentation d’un nouveau serveur d’autorisation externe comme ”Key-
cloak” qui permet la centralisation des politiques d’accès. Il s’agit donc, d’élaborer un
outil qui permet de : — Offrir une API REST pour la partie administration ; — Propose
une console d’administration pour la gestion centralisée des utilisateurs ;
Dans cette section, nous définissons les concepts fondamentaux liés l’analyse de sécurité
ainsi, nous exposons des notions liées à Keycloak. Nous parlons également du but et de
l’utilité de notre serveur de sécurité dans le cadre de notre projet.
1.3.4.1 Keycloak
Keycloak est une solution open source de gestion des identités et des accès (IAM) qui
offre des fonctionnalités de Single Sign-On (SSO) pour les applications web et mobiles. Il
permet de centraliser la gestion des identités de vos utilisateurs et de contrôler l’accès à vos
applications et services en ligne. L’application agit comme un serveur d’identité central
et gère les authentifications en utilisant des protocoles tels que OAuth2, OpenID Connect
et SAML. La solution offre une grande flexibilité dans la gestion des utilisateurs et des
rôles, ainsi que pour la configuration des stratégies d’authentification et d’autorisation
pour chaque application.
7
Chapitre 1. Initialisation du projet
1.3.4.3 OpenID
8
Chapitre 1. Initialisation du projet
opérationnelle du produit ;
— Backlog du produit : il s’agit d’une liste des exigences et des fonctionnalités, fourni
par le « Product owner » ;
— User stories : les « user stories » sont un ensemble des exigences à développer écrit
au langage de l’utilisateur ;
— planification du Sprint : avant chaque sprint, une réunion de planification est
organisée pour mettre dans le « Backlog du produit » la liste des fonctionnalités et des
exigences en ordre de priorité ;
— revue du Sprint (Sprint Review) : le « Product Owner » présente l’incrément
terminé (potentiellement livrable) au client ;
— rétrospective du Sprint (Sprint Retrospective) : l’équipe de sprint inspecte en
collaboration le sprint et cherche des moyens pour s’améliorer ;
— mêlée quotidienne : Scrum exige la notion de mêlée quotidienne (Daily meeting),
c’est une réunion quotidienne, dure de 5 à 15 minutes, entre l’équipe de développement, le
« Scrum master » et le « Product owner » qui vise principalement à évaluer l’avancement
du travail ;
La figure 1.7 [12] présente une vue globale du cycle de vie du cadre de travail « Scrum ».
1.5 Conclusion
Après avoir présenté l’organisme d’accueil, la solution proposée, et justifier notre choix
méthodologique pour la gestion du projet, nous allons analyser dans le chapitre suivant,
notre solution de sécurité.
9
Chapitre 2
10
Chapitre 2. Analyse et planification du projet
2.1 Introduction
Au niveau de ce chapitre, nous abordons la partie de la capture des besoins. Nous
pilotons ensuite notre projet avec le cadre de travail Scrum. Ainsi, nous présentons l’ar-
chitecture matérielle et logicielle de notre solution, les différents outils mais aussi les
technologies utilisés pour le développement de notre solution.
La spécification des besoins est une phase essentielle pour que les résultats de déve-
loppement de notre application soient bien conformes aux attentes du client. Dans cette
section, nous parlons des besoins fonctionnels et non fonctionnels que nous prévoyons
mettre en œuvre dans notre projet.
Les besoins fonctionnels ou besoin métiers, sont les besoins indispensables auxquels
doit répondre l’application. Ils sont également les actions que le système doit exécuter.
— Authentification : Chaque utilisateur (Administrateur, Manager, Responsable
qualité, Opérateur) possède un nom d’utilisateur et un mot de passe qui sont spécifique
et lui permettent de s’identifier, afin d’autoriser l’accès de cette entité à des ressources en
toutes sécurité
— Gestion des utilisateurs : Cette fonctionnalité est assuré par l’administrateur qui
doit associer un compte à chaque utilisateur .
— Gestion d’accès : Aussi l’administrateur est le responsable dans cette fonctionnalité
qui affecte les permissions pour chaque profil .
11
Chapitre 2. Analyse et planification du projet
Nous entendons par besoins non fonctionnels les besoins qui assurent l’amélioration
de la qualité des services de l’application. Ils agissent comme un ensemble des contraintes
à garder et à prendre en considération pour éviter l’incohérence dans le système. Notre
application doit répondre aussi aux exigences suivantes :
— la convivialité : le système doit être facile d’utilisation. Il doit y avoir des interfaces
qui répondent aux principaux critères d’ergonomie ;
— la performance : la fluidité du traitement doit être maintenue dans la mesure du
possible. Par exemple, quand il s’agit de fonctionnalités critiques, nous devrons garder le
parallélisme de traitement en utilisant des « Threads » ;
— la maintenabilité : au cours de développement il faut toujours garder la notion de la
modularité. Ainsi, le code de notre application doit être clair, documenté et bien structuré
pour permettre d’éventuels développements.
12
Chapitre 2. Analyse et planification du projet
13
Chapitre 2. Analyse et planification du projet
une réunion avec le « scrum master » et le « product owner » nous avons défini cinq sprints
chacun dure quatre semaines et deux releases. Nous mettons donc dans cette section le
planning des divers sprints que nous avons programmé dans un format graphique, via le
diagramme du GANTT (figure 2.2)
14
Chapitre 2. Analyse et planification du projet
Nous montrons dans cette partie, l’ensemble des fonctionnalités techniques qui donnent
une vision globale de la spécification matérielle sur laquelle notre application a été déve-
loppée. Nous identifions dans le tableau 2.3 les outils matériels utilisés pour la réalisation
de notre système :
PC Portable ASUS
Processeur (CPU) et Fréquence Intel Core i7-7500U 2.90 GHZ
Mémoire physique (RAM)A 8 GO
Disque Dur 256 GO - SSD
Processeur graphique (GPU) NVIDIA Geforce MX110
Système d’exploitation Windows 10 Professionnel, 64 bit
Après avoir présenté les moyens matériels, nous abordons à travers le tableau 2.4 les
différents outils utilisés pour la mise en place de notre application :
15
Chapitre 2. Analyse et planification du projet
2.4.3.1 Langages
— Java : Java est un langage de programmation orienté objet, portable qui ”fonc-
tionne aussi bien sur Windows que Mac ou Linux, et sur une myriade d’appareils”[13] ;
— TypeScript : TypeScript est un langage de programmation open source, son but
principal est d’améliorer la productivité du code Javascript ;
— HTML : Le « HyperText Markup Language » est un langage de balisage qui est ”uti-
lisé afin de créer et de représenter le contenu d’une page web et sa structure”[14] ;
— CSS :— CSS : CSS est un langage qui permet de décrire la présentation des pages
HTML.
2.4.3.2 Frameworks
Keycloak est un logiciel open source de la famille IAM : Identity and Access Manage-
ment. Le but de Keycloak est de simplifier la sécurisation des applications, des appareils
et des services au sein du système d’information. En effet, la gestion des identités et
l’authentification sont des fonctionnalités complexes que les développeurs devaient aupa-
ravant développer eux-mêmes. Ces fonctionnalités sont nativement fournies par keycloak.
Cela se traduit par moins complexité et plus de sécurité pour le système d’information, et
les développeurs peuvent désormais se concentrer sur les fonctionnalités cœur de métier.
Keycloak offre nativement plusieurs catégories de fonctionnalités majeures :
Les fonctionnalités nécessaires à la gestion des identités : Enrôlement des utilisateurs,
applications et appareils, politique de mots de passe, validation des adresses email, page
de login, page mot de passe oublié, option se souvenir de moi, MFA ou authentification
multifactorielle, etc. L’authentification comme un service. Cela signifie qu’une application
ou un appareil peut déléguer à Keycloak la responsabilité d’authentifier ses utilisateurs.
La configuration des droits d’accès aux applications. Les droits peuvent être attribués
aussi bien aux utilisateurs qu’aux applications.
16
Chapitre 2. Analyse et planification du projet
Realm : Dans le contexte de Keycloak, un Realm est un royaume qui regroupe des
utilisateurs, des clients et des configurations de sécurité. Chaque Realm agit comme un
monde distinct avec ses propres règles d’authentification et d’autorisation. C’est comme
si chaque royaume de Game of Thrones avait son propre jeu de règles, tel qu’un Realm
pour votre application Web et un autre Realm pour votre application mobile.
Client Secret : Tel un secret bien gardé dans les intrigues complexes de Game of
Thrones, le Client Secret est une chaîne de caractères secrète utilisée pour authentifier le
client d’application auprès du serveur d’authentification. Comme un personnage aux mo-
tivations cachées, le Client Secret est utilisé dans certains flux d’authentification OAuth
2.0 pour prouver l’identité du client.
Grant Type : Tel les différents types de stratégies politiques dans Game of Thrones,
le Grant Type est un paramètre utilisé lors de l’échange d’autorisation OAuth 2.0 pour
spécifier le type de flux d’authentification utilisé. Chaque type de subvention, tel que
”password” utilisé pour les flux de nom d’utilisateur et mot de passe, et ”client creden-
tials” utilisé pour l’authentification de client à client, offre des possibilités diverses pour
sécuriser l’authentification et l’autorisation dans les systèmes distribués.
Ces termes font partie du protocole OAuth 2.0 et sont utilisés pour sécuriser l’authen-
tification et l’autorisation dans les systèmes distribués. Tout comme les divers éléments de
Game of Thrones qui s’entremêlent dans une complexité intrigante, en utilisant un Client
ID et un Client Secret appropriés, ainsi que le bon Grant Type, les clients d’application
peuvent demander et obtenir des jetons d’accès auprès du serveur d’authentification pour
accéder aux ressources protégées.
Besoins techniques :
Dans une architecture microservices, l’utilisation de Keycloak peut jouer un rôle im-
portant dans la gestion des identités et des accès,Voici quelques aspects de l’utilisation :
Gestion centralisée des identités : Keycloak permet de centraliser la gestion des uti-
lisateurs, des rôles et des autorisations. Chaque microservice peut s’intégrer à Keycloak
pour gérer l’authentification et l’autorisation des utilisateurs de manière cohérente, en fait
les différentes maisons du GOT sont regroupées sous une autorité centrale.
17
Chapitre 2. Analyse et planification du projet
Sécurité basée sur les tokens : En effet les sceaux portant les armoiries des maisons
nobles de Westeros qui garantissent l’authenticité des messages, Keycloak utilise des to-
kens, tels que les tokens d’accès JWT (JSON Web Token), pour authentifier les demandes
entre les microservices. Les microservices peuvent valider ces tokens pour garantir que
seules les demandes provenant d’utilisateurs authentifiés et autorisés sont acceptées.
18
Chapitre 2. Analyse et planification du projet
2.6 Conclusion
Tout au long de ce chapitre, nous avons détaillé les différents besoins de notre sys-
tème, identifié l’équipe de production et présenté notre backlog du produit. Nous avons
aussi présenté l’environnement matériel et logiciel utilisé pour la mise en place de notre
système, ainsi que son architecture physique et logique. Dans le chapitre suivant, nous
allons entamer la première partie de la réalisation du projet, la Release 1.
19
Chapitre 3
20
Chapitre 3. Mise en œuvre de : Release 1
3.1 Introduction
Dans ce présent chapitre, nous élaborons les deux premiers sprint. Dans ce sens, nous
mettons le backlog de chaque sprint en présentant les différents stades de production à
savoir la phase d’analyse, de conception et de réalisation.
ID et Feature ID Tache E
1.1 Creation de realm ,client, utilisateurs 1
1.2 Création des roles 1
Configuration de keycloak
1.3 assignation des rôles 1
1.4 Génération de Token d’accès 1
21
Conclusion et perspectives
22
Conclusion et perspectives
Conclusion générale
23
Annexes
24