Qu’est-ce que la multi-location et la multi-location Keycloak ?
Dans les applications multi-locataires, une seule instance logicielle peut desservir plusieurs locataires (utilisateurs) ou organisations. Les données de chaque utilisateur sont isolées et ne peuvent pas être consultées par d’autres sur la même instance logicielle. La multi-location maximise le partage des ressources, permet à plusieurs locataires de se connecter et d’utiliser un seul serveur ou cluster. Cette architecture permet à plusieurs locataires apparentés de partager certaines ressources, possiblement des bases de données, des instances d’application ou une infrastructure telle que calcul, mémoire ou stockage. Ainsi, chaque utilisateur obtient sa propre instance logique de l’application. De plus, certains utilisateurs peuvent personnaliser certaines parties de l’application métier, comme le thème de l’interface utilisateur. Bien sûr, il est important de gérer les identités des utilisateurs dans ce scénario, ce qui rend une solution efficace de gestion des identités et des accès cruciale.
Ainsi, l’application multi-locataire peut servir plusieurs clients. Chaque client bénéficie d’une expérience semblable à celle qu’il aurait eue si l’application avait été conçue sur mesure pour lui. L’équipe qui construit et héberge l’application économise de l’argent et du support grâce au partage de ressources. En outre, cela garantit également la sécurité des données privées de chaque locataire face aux autres.
Pour expliquer la multi-location dans un scénario réel, prenons l’exemple d’un bâtiment de bureaux avec un système de sécurité centralisé à l’entrée principale. Vous entrez dans l’espace de bureau par l’entrée principale à l’aide de votre carte d’accès. Vous accédez ensuite à la tour de bureaux avec la carte de la tour. Vous ne pouvez pas accéder aux autres tours de bureaux puisque vous n’y avez pas accès. Vous pouvez accéder aux salles de réunion de votre tour et au café / espace détente. Mais toutes les personnes dans les locaux de bureau partagent une certaine infrastructure commune.
- Sécurité d’accès : Les locataires ne peuvent pas accéder à d’autres domaines. Chaque locataire fonctionne dans un domaine séparé et ne peut accéder aux données d’aucun autre locataire.
- Moins d’implications sur l’évolutivité : Comme chaque utilisateur obtient sa propre instance logique, la montée en charge a moins d’implications, ce qui réduit les coûts. En environnement mono-locataire, chaque utilisateur ou locataire obtient sa propre instance de l’application.
- Moins de ressources nécessaires : Avec une seule instance, les ressources telles que le CPU, la base de données, tout volume persistant (si utilisé avec Kubernetes), etc., sont dupliquées. Le coût peut augmenter selon la configuration requise. Avec la multi-location, une seule instance de l’application s’exécute et partage les ressources entre les utilisateurs concernés.
- Isolement des performances : L’impact sur la performance d’un locataire n’affecte pas celle d’un autre locataire.
- Isolement de la configuration : Chaque locataire peut gérer sa propre configuration de domaine isolée sans affecter celle d’un autre locataire.

Flux d’authentification Keycloak :
- L’utilisateur charge l’application React et demande l’accès à une ressource. Une ressource est un objet protégé. Il peut s’agir d’API, de fichiers de données, de statistiques, ou de certaines pages d’application.
- L’application React transmet la requête au serveur Keycloak.
- Keycloak demande à l’utilisateur de saisir son nom d’utilisateur et son mot de passe pour accéder à la ressource protégée.
- L’utilisateur saisit son nom d’utilisateur et mot de passe puis clique sur Connexion sur la page Keycloak. Ainsi, l’application ne voit jamais le mot de passe de l’utilisateur.
- Keycloak authentifie l’utilisateur avec les informations d’identification fournies et crée un jeton d’accès. Keycloak redirige ensuite vers l’application React avec le jeton d’accès. L’application utilisera alors ce jeton d’accès pour toute demande ultérieure d’accès.
- L’application React accorde à l’utilisateur l’accès à la ressource demandée sur le serveur Keycloak.
Présentation de la multi-location Keycloak
Keycloak est une solution de gestion des identités et des accès open source pour les applications et services modernes. Il protège les applications et services avec peu ou pas de code.
La multi-location Keycloak prend en charge plusieurs domaines (« realms »). Chaque domaine peut comporter plusieurs utilisateurs et clients. Chaque utilisateur d’un domaine particulier communique avec une application cliente configurée comme client dans un domaine pour l’authentification.

Vous pouvez intégrer des applications mobiles, du frontal et du dorsal avec Keycloak. Keycloak offre une solution d’authentification unique (« single sign-on ») aux organisations. Plusieurs domaines peuvent être créés à l’aide des realms. Un realm est comme un espace de noms permettant de gérer toute la configuration du domaine. Comme illustré ci-dessus, chaque realm peut être configuré pour avoir plusieurs clients en fonction des applications utilisées par le domaine pour s’authentifier via Keycloak.
Chaque domaine peut inclure des utilisateurs, des groupes et des rôles. Nous pouvons personnaliser l’interface utilisateur ou le thème pour Keycloak afin que chaque domaine ait une apparence différente. Keycloak prend également en charge plusieurs fournisseurs d’identité comme OpenID Connect, SAML, OAuth2 et les connexions sociales comme Google, Facebook, etc.
Comment ça fonctionne ?
Keycloak prend en charge les flux d’authentification OAuth2. Un exemple de flux OAuth2 est expliqué ci-dessous :
Flux du processus de Keycloak « resource owner password credentials grant » :

- Dans le flux d’authentification, l’utilisateur clique sur connexion sur l’application Web cliente.
- L’application Web vérifie la présence d’un jeton d’accès ; s’il est absent, elle transmet les informations d’identification de l’utilisateur au point de terminaison du jeton Keycloak.
- Keycloak valide les informations d’identification de l’utilisateur et génère un jeton d’accès.
- Le serveur Keycloak répond avec le jeton d’accès et un jeton d’actualisation (facultatif).
- L’application peut maintenant accéder à l’API à l’aide de ce jeton d’accès pour consulter d’autres informations protégées.
- L’API re-valide ensuite le jeton d’accès pour vérifier son expiration et sa signature valide et répond avec la ressource demandée à l’utilisateur, clôturant ainsi le flux d’authentification oath2.
Keycloak prend également en charge d’autres flux d’authentification OAuth2 : Flux « Client Credentials », Flux « Authorization Code », Flux « Authorization Code » avec PKCE (Proof Key for Code Exchange), et Flux « Implicit ».

