Gagner du temps et déporter votre authentification avec Keycloak

Ronan Morel
Nov 1 · 4 min read

Toujours long et fastidieux, la mise en place d’une authentification au sein d’une application est l’une des préoccupation majeure à la mise en place d’un projet. S’il l’on veut bien faire les choses, elle a toujours un coût important à l’initialisation du projet alors que c’est une chose que l’on a faite 1, 2 voire 10 fois, sans compter la maintenance sur le long terme et surement les failles de sécurité que l’on omet.

Alors pourquoi ne pas utiliser une solution déjà existante et maintenue par d’autres que nous ?

Dans cet article, je vais parler de la gestion de l’authentification via un SSO (Sigle Sign On), Keycloak.

Qu’est-ce que Keycloak ?

Keycloak est un outil de gestion des identités et d’authentification. Il est porté par Red Hat et est open-source. Cet outil est utilisé pour le SSO, c’est-à-dire, que pour plusieurs services, on délègue l’identification par Keycloak. Pour cela, il implémente les standards OAuth 2.0 avec les protocoles sous-jacents OpenID ou SAML.

Pour info, d’autres identity provider existent comme Google, GitHub, Facebook ou encore Twitter.


Un peu de contexte

Pour illustrer cette mise en place de l’authentification par Keycloak, nous allons d’abord parler des services à développer. Nous avons deux services : Une API qui ouvre accès aux données que l’on veut distribuer et un front-end qui les affichent. Nous avons aussi une notion de données public/private, et une notion de données user/admin.

Architecture de cette mini application

Pour cette application, le découpage est le suivant :

  • Un backend en Kotlin avec Spring 5 / Spring boot 2.0

Le procédé sera le suivant :

  1. L’utilisateur arrive sur l’application front. Il peut intérargir avec plusieurs buttons et l’IHM lui donne les informations associées. Il peut aussi s’authentifier.

Après le théorique, attaquons le technique maintenant.

Configuration de Keycloak

Création d’un realm

Créer un realm test dans Keycloak

Création d’un client côté API

Créer un client nommé test-api, avec le protocole OpenID et avec comme type bearer-only

Création d’un client côté Web

Créer un client nommé test-web, avec le protocole OpenID et avec comme type public

Configuration côté API

Ajout des dépendances dans Gradle

Ajout des configurations dans le fichier de ressource application.yml

Ajout de la classe de configuration dans spring boot

Configuration côté Front-end

Installation de la dépendance

npm install --save @dsb-norge/vue-keycloak-js

Ajout de la configuration dans le fichier main.ts

Dans App.vue et TopBar.vue, utiliser l’objet $keycloak (example de App.vue)

Pour vérifier authentication de l’utilisateur

  • Pour se déconnecter :

Vidéo de présentation

Pour illustrer cette article, j’ai réaliser une vidéo où je mets en oeuvre ce qui est présenté ci-dessus par l’intermédiaire un pseudo live-coding.

Liens du projet


Conclusion

Keycloak est un outil simple à mettre en place. Pour la mise en place rapide d’une authentication sur une application, je pense qu’utiliser Keycloak permet de gagner des jours de développement et donc de l’argent, et aussi de s’abstraire pas mal de problème et surtout de sa maintenance et donc de pouvoir se concentrer sur l’application métier en tant que tel.

Sources

Slickteam

Le Blog — Come as you geek ! 100% technophile & 100% pur beurre une ESN pas comme les autres. www.slickteam.fr — contactez-nous !

Ronan Morel

Written by

`Unknow` Dev. @SlickteamFR Partner. #Linux #Back #Java #Kotlin #Spring #Front #Js #Typescript #Vuejs #Angular #IoT #NodeJS #Raspberry #DevOps #Docker #Bash

Slickteam

Slickteam

Le Blog — Come as you geek ! 100% technophile & 100% pur beurre une ESN pas comme les autres. www.slickteam.fr — contactez-nous !

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade