Architecture d'une application sécurisée avec un IdP(Identity Provider)
Dans ce tutoriel, nous allons apprendre à créer une architecture d'application sécurisée avec un Identity provider(IdP).
Dans la plus part de nos projets, il existe un système d'authentification pour gérer l'accès aux utilisateurs. Un bon choix de ce dernier est donc primordial.
La sécurité est un aspect essentiel de toute application web. Une application web non sécurisée peut être vulnérable à des attaques de pirates, ce qui peut entraîner la compromission de données sensibles, telles que des noms d'utilisateur, des adresses e-mail et des mots de passe.
Une solution efficace pour sécuriser une application web est d'utiliser un service d'annuaire ou un fournisseur d'identités tel que LDAP ou Keyloack.
Dans ce tutoriel, nous allons apprendre à créer une architecture d'application sécurisée avec un Identity provider(IdP).
1- C'est quoi Un IdP ?
Un Identity provider ou IdP est un fournisseur qui permet d'accéder, de rechercher, de modifier et de gérer des données dans un service d'annuaire. Un IdP est principalement utilisé pour authentifier et autoriser les utilisateurs.
1.1- Pourquoi utiliser un Identity provider(IdP) ?
Etant un outil de gestion des annuaires, nous pouvons l'utiliser pour:
- L'authentification et l'autorisation des utilisateurs : Un IdP est souvent utilisé pour authentifier les utilisateurs et leur accorder l'accès aux ressources réseau.
- La gestion des identités : Nous pouvons également l'utiliser pour gérer les identités des utilisateurs, y compris les noms d'utilisateur, les mots de passe, les adresses électroniques et les informations d'adresse.
- Le stockage de données : Enfin un IdP peut être utilisé pour stocker des données d'entreprise, telles que les numéros de téléphone, les adresses et les informations sur les produits.
1.2- Les points forts des IdP ?
Etant un outil de gestion des annuaires, nous pouvons l'utiliser pour:
- La centralisation des données : La gestion des données est simplifiée, ce qui permet aux utilisateurs d'accéder à leurs informations à partir de n'importe où
- La sécurité : La prise en charge d'un certain nombre de mécanismes de sécurité, tels que l'authentification à deux facteurs(2FA) et le cryptage des données. Cela aide à protéger les données d'identification et d'autres données sensibles des accès non autorisé
- La flexibilité : En général les IdP sont standards et peuvent être utilisé avec une variété de services d'annuaire. Cela permet aux organisations de choisir le service d'annuaire qui répond le mieux à leurs besoins
2- C'est quoi l'architecture d'une application web ?
L'architecture d'une application web définit la manière dont les composants interagissent entre eux et ainsi que la manière dont les utilisateurs interagissent avec elle.
Il existe de nombreux types d'architectures et les plus courantes sont :
- L'architecture monolithique : on a un seul code pour toute l'application
- L'architecture microservices : l'application est divisée en plusieurs services indépendants
- L'architecture N-tier ou multi-tier : ici on divise l'application en couches. Pour une architecture 3-tier, on aura la couche présentation, la couche logique et la couche de données
3- Pourquoi faire l'architecture de notre application ?
L'architecture d'une application web est un élément important dans sa conception et en choisissant la bonne architecture, les développeurs peuvent créer des applications :
- Flexibles
- Fiables
- Performantes
- Evolutives
Faire l'architecture d'une application permet de ressortir un bon système tout en respectant les contraintes en terme les ressources et de besoins de l'application.
4- Cas pratique : architecture d'une application sécurisée avec un IdP
Nous allons presenter les contraintes et besoins a respecter dans un premier temps puis une architecture pour notre application.
4.1- Presentation du projet/application
Dans notre nouveau projet, nous avons déjà un gestionnaire d'annuaire. Il nous ait demande de développer l'application tout en respectant les contraintes suivantes :
- Un site web : Vue.js
- Une application mobile pour accéder aux services
- Un backend pour la gestion des évènements. Dans ce cas en Java Sprint Boot
- Un fournisseur d'identités existant qui contient déjà les utilisateurs existants : Keyloack
- Des machines virtuelles pour chaque instance(frontend et backend)
4.1.1- Diagrammes de flux
4.1.2- Diagramme de sequences
Etapes de fonctionnement :
- Le client s'authentifie auprès d'un Identity Provider (IdP) en fournissant ses informations d'identification
- L'IdP renvoie un token au client, qui contient les informations nécessaires pour l'identifier et lui donner les autorisations nécessaires pour demander des ressources au service backend
- Le client effectue une requête au service backend pour recevoir une ressource, en passant le token reçu de l'IdP en tant que paramètre
- Le service backend vérifie auprès de l'IdP que le token est valide et que le client a les autorisations nécessaires pour accéder à la ressource demandée
- L'IdP renvoie une réponse au service backend
- Si la réponse de l'IdP indique que l'identité du client a été reconnue et que les autorisations sont approuvées, le service backend renvoie la réponse au client
4.3- Construction de l'architecture
L'architecture qu'on mettra en place est celle en micro-services. On aura comme services dans un premier temps :
- Le service d'authentification/Identity Provider: dans notre cas ca sera Keyloack un IdP open source et très sécurisé.
- Le service de gestion des évènements qui communiquera avec le service d'authentification/Identity Provider pour s'assurer que la session de l'utilisateur est valide. Il sera développé en Java Spring Boot et communiquera avec le client grâce a une API. De plus la base de données permettra de stocker les données de ce service.
Nous avons donc l'architecture suivante de notre application
Abouar Prosper
Développeur web
No comments yet. Start a new discussion.