WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Etude et mise en place d'un service cloud d'iam basé sur keycloak


par Saratou Diallo
Institut Supérieur d'Informatique (ISI) Dakar - Master 2 2022
  

sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

REPUBLIQUE DU SENEGAL


Un peuple-Un but-Une foi

Ministère de l'Enseignement Supérieur et de la Recherche

Direction Générale de l'Enseignement Supérieur Privé

Institut Supérieur d'Informatique

MEMOIRE

Présenté par :

Saratou Diallo

Pour l'obtention du diplôme de :

Master Professionnel : Génie-Logiciel

Parcours : Informatique

Sujet :

Étude et Mise en place d'un service cloud de gestion des identités et des accès basé sur keycloak

Soutenu à Dakar, le

Membres du jury

Président

Pr. Samba NDiaye

Professeur

Superviseur de mémoire

Pr Abdoulaye Ly

Ingénieur

Examinateur 1 :

Pr Bassirou Toure

Doctorant

Examinateur 2 :

Pr. NGor Seck

Ingénieur

Année Académique : 2021 -2022

AVANT-PROPOS

L'Institut Supérieur d'Informatique (ISI) est un groupe privé d'enseignement supérieur universitaire et professionnel avec une expérience de plus de dix ans. Il a été créé par des professionnels du secteur des technologies de l'information et de la communication. Les diplômes délivrés par cet institut sont la licence, le master et éventuellement le doctorat. Les enseignements y sont dispensés dans les filières telles que Ingénierie Logiciel, Ingénierie informatique, Ingénierie réseaux et télécom, Communication et Marketing.... Ils s'inspirent des normes recommandées par le CAMES (Conseil Africain et Malgache pour l'Enseignement Supérieur), de l'ANAQ-SUP,...

Pour l'obtention du master professionnel en Génie logiciel à l'ISI, il est demandé à chaque étudiant l'élaboration d'un mémoire de fin de cycle. C'est dans cette optique que nous avons rédigé ce document qui s'intitule : Étude et Mise en place d'un service cloud de gestion des identités et des accès (IAM pour Identity and Access Management) basé sur keycloak.

Le sujet est intitulé « Étude et Mise en place d'un service cloud de gestion des identités et des accès (IAM pour Identity and Access Management) basé sur keycloak ». La plateforme va nous permettre de faciliter le développement d'applications plus sûres et plus sécurisées et de profiter pleinement des avantages de l'outil keycloak.

Afin d'offrir des fonctionnalités aux utilisateurs, il doit mettre à leur disposition une interface d'utilisation permettant son exploitation. Cette interface sera accessible via un service PaaS hébergé chez AWS(Amazon Web Services) .

Ce document est le fruit de notre travail de recherche durant les six mois consacrés à ce projet. Des difficultés n'ont pas manqué. Elles concernent particulièrement la disponibilité de données fiables et actuelles.

DEDICACES

Je dédie ce mémoire

A mes parents pour leur amour inestimable, leur confiance, leur soutien, leurs sacrifices et toutes les valeurs qu'ils ont su m'inculquer.

A mon très cher ami Amadou Oury Diallo pour son soutien et sa présence tout au long de mon parcours universitaire.

A mon maître de mémoire Monsieur Abdoulaye Ly, pour sa disponibilité, son soutien et sa patience tout au long de l'élaboration de ce mémoire.

A toute ma famille ainsi qu'à mes amis.

Remerciements

Avant toute chose, Gloire à Allah, Créateur de toute chose, Celui qui rend le difficile facile, l'impossible possible et Qui, par Sa Grâce a permis la réalisation de ce travail.

Je tiens à remercier mon directeur de mémoire Monsieur Abdoulaye Ly, professeur à l'Institut Supérieur d'Informatique ISI de Dakar, de m'avoir accueillie dans son équipe et d'avoir accepté de diriger ce travail. Sa rigueur scientifique, sa disponibilité, sa patience et son écoute ont permis à ce travail d'aboutir dans les meilleures conditions. 

Mes remerciements s'adressent également à l'ensemble du corps professoral de l'ISI, et à tous mes professeurs depuis la maternelle pour leur apport dans mon éducation. 

Qu'ils puissent trouver dans ce travail le témoignage de ma sincère gratitude et de mon profond respect. 

Je tiens à remercier les membres du jury d'avoir évalué ce travail. Mes remerciements les plus chaleureux vont à tous mes camarades à l'ISI pour leurs encouragements et pour l'ambiance agréable tout au long de ces rencontres de travail.

Résumé

La gestion des identités et des accès (IAM pour Identity and Access Management) est un moyen de gérer un ensemble donné d'identités numériques des utilisateurs, et les privilèges associés à chaque identité. Il s'agit d'un terme général qui couvre un certain nombre de produits différents qui remplissent tous la même fonction de base. Keycloak est un des nombreux outils de gestion des identités et des accès qui offre un certain nombre de fonctionnalités tel que l'authentification unique (SSO pour Single Sign On/Out) pour la gestion des identités et des accès. L'utilisation d'un outil tel que Keycloak est une première étape vers le développement de logiciels et applications plus sûrs et plus sécurisés. Cependant pour tirer de réels avantages dans l'utilisation d'un tel outil il faut une compréhension plus ou moins poussée de celui-ci, ce qui peut prendre un certain temps.

Ce mémoire propose un service cloud de gestion des identités et des accès basé sur keycloak. Il met à disposition des développeurs un service mesurable auquel ils peuvent souscrire et qui leur permettra de tirer pleinement parti des avantages et des facilités qu'offre l'outil keycloak pour le développement d'applications et logiciels sécurisés. Après une étude poussée et l'utilisation de keycloak, Nous avons choisi un ensemble d'outils permettant le développement de notre plateforme. Nous avons choisi un environnement de développement windows dans lequel on utilise docker pour l'installation de keycloak, visual studio a été choisi comme éditeur de code avec le langage node.js et une base de données local mysql. La plateforme sera déployée sur un cloud PaaS (Platform as a Service) chez Amazon Web Services AWS.

Abstract

Identity and Access Management (IAM) is a means of managing a given set of digital user identities, and the privileges associated with each identity. It is an umbrella term that covers a number of different products that all perform the same basic function. Keycloak is one of a variety of identity and access management tools that offer a range of features such as Single Sign On/Out (SSO) for identity and access management. The use of a tool such as Keycloak is a first step towards the development of safer and more secure software and applications. However, to get real benefits from using such a tool requires a more or less advanced understanding of it, which can take some time.

This project proposes a cloud service for identity and access management based on keycloak. It provides developers with a measurable service that they can subscribe to and that will allow them to take full advantage of the benefits and amenities that the keycloak tool offers for the development of secure applications and software. After a close study and the use of keycloak, we have chosen a set of tools allowing the development of our platform. We chose a windows development environment in which we use docker for the installation of keycloak, visual studio was chosen as a code editor with the node.js language and a local mysql database. The platform will be deployed on a PaaS (Platform as a Service) cloud at Amazon Web Services.

Table des matières

Liste des Figures II

Liste des Tableaux 10

Glossaire 12

1. Chap1: Introduction Générale 13

1.1. Contexte  14

1.2. Problématique 15

1.3. Objectifs 15

1.4. Motivations 16

2. Chap2: Travaux existants 18

Introduction 18

2.1. Concepts de base 19

2.2. L'outil Keycloak 29

2.3. Étude de l'existant 33

Conclusion 38

3. Chap 3: Solution Proposée 39

Introduction 39

3.1. Spécification des besoins du système 39

3.2. Réalisation 62

3.3. Implémentation de la solution 65

3.4. Déploiement et Tests 74

Conclusion 82

4. Chap4: Conclusion et Perspectives 83

4.1. Conclusion: 83

4.2. Perspectives: 84

Bibliographie i

I. Ouvrages i

II. Mémoires i

III. Articles i

Wébographie ii

Liste des Figures

Figure 1 : Processus de génération d'une JWT 22

Figure 2 : Différentes parties d'une JWT 22

Figure 3 : Exemple d'une JWT 23

Figure 4 : Exemple d'un ID Token 26

Figure 5 : Illustration du fonctionnement d'OAuth2 29

Figure 6 : Diagramme de cas d'utilisation globale de l'application 44

Figure 7 : Diagramme de cas d'utilisation illustrant les actions de notre système keycloak 45

Figure 8 : Package Abonnement 45

Figure 9 : Package Activity 46

Figure 10 : Package AddUsers 46

Figure 11 : Package Application 46

Figure 12 : Package AppRequest 47

Figure 13 : Package Authentication 47

Figure 14 : Package Payment 48

Figure 15 : Diagramme de séquence Authentification 48

Figure 16 : Diagramme de séquence Payement 49

Figure 17 : Diagramme de séquence Abonnement 51

Figure 18 : Diagramme de séquence AddUsers 53

Figure 19 : Diagramme de séquence requête d'authentification 54

Figure 20 : Diagramme de séquence AddApplication 55

Figure 21 : Diagramme de classe 56

Figure 22 : Architecture 3/3 57

Figure 23 : Architecture de l'application 59

Figure 24 : Arborescence des dossiers de l'application 60

Figure 25 : Diagramme de déploiement 62

Figure 26 : Page d'accueil de l'application 70

Figure 27 : Page de connexion 70

Figure 28 :Page de connexion 70

Figure 29 : Page d'ajout d'une application étape 1 71

Figure 30 : Page d'ajout d'une application étape 2 72

Figure 31 :Page d'ajout d'une application étape 3 73

Figure 32 : Page d'ajout d'une application étape 4 74

Figure 33 : Page d'ajout d'une application récapitulatif 75

Figure 34 :Page liste des applications 76

Figure 35 : Page détails et configuration d'une application 77

Figure 36 : Installation de AWS CLI 78

Figure 37 : Configuration de AWS CLI 78

Figure 38 : Dockerfile 78

Figure 39 : Containerisation de l'application 79

Figure 40 : Résultat de la commande de containerisation 79

Figure 41 : Cluster sur eks 80

Figure 42 : Configuration de k8s dans docker 80

Figure 43 : Fichier manifest.yml 81

Figure 44 : Commande pour déployer le fichier .yml 81

Figure 45 : Résultat des commandes de vérification du déploiement. 82

Figure 46 : Base de données Amazon RDS 82

Figure 47 : Fichier yaml pour keycloak 83

Figure 48 : Résultat après déploiement de keycloak 83

Figure 49 : Vérification du déploiement de l'application 84

Liste des Tableaux

Table 1 : Scénario de Paiement 49

Table 2 : Scénario Abonnement 50

Table 3 : Scénario Ajout des utilisateurs 52

Table 4 : Scénario Envoie d'une requête d'authentification 54

Table 5 : Tableau comparatif des providers cloud 64

Liste des Abréviations

Abréviation

Signification

IAM

Identity and Access Management

SP

Service Provider

IdP

Identity Provider

PaaS

Plateforme as a Service

SSO

Single Sign On/Out

MFA

Multi Factor Authentication

RBAC

Role Based Access Control

HIPAA

Health Insurance Portability and Accountability Act

AS

Authorization Server

RO

Resource Owner

RS

Resource Server

OTP

One Time Password

PAYG

Pay As You Go

OS

Operating System

HTTP

HyperText Transfer Protocol

JWT

Json Web Token

JWS

JWT Signé

API

Application Programing Language

SGBDR

Système de Gestion de Base de Données Relationnelle

UML

Unified Modeling Language

SQL

Structured Query Language

DC

Data Center

OIDC

OpenID Connect

SLA

Service-Level Agreement

Glossaire

Terme

Explication

OAuth

Protocole de sécurité très utilisé.

OIDC

Protocole de sécurité complémentaire de OAuth.

SAML

Protocole de Sécurité.

Pay As You Go

Système de Paiement utilisé par les provider cloud.

Provider

Fournisseur de services cloud.

Realm

Dans keycloak, espace de gestion des objets incluant les utilisateurs, les applications, les rôles et les groupes.

Service-Level Agreement

Accord entre un fournisseur de services cloud et un client qui assure le maintien d'un niveau de service minimum. 

Data Center

Infrastructure composée d'un réseau d'ordinateurs et d'espaces de stockage.

sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Je ne pense pas qu'un écrivain puisse avoir de profondes assises s'il n'a pas ressenti avec amertume les injustices de la société ou il vit"   Thomas Lanier dit Tennessie Williams