VT2018 Keycloak

=Auteur=
 * Sujet : Performance Monitoring


 * Enseignants : Georges-Pierre Bonneau, Didier Donsez


 * Rédigé par : Joffrey Ferreira


 * Contexte : Veille Technologique - Informatiques 5ème année - Polytech Grenoble


 * Date de dernière modification : 09/12/2018


 * Contact : Joffrey.Ferreira@etu.univ-grenoble-alpes.fr

=Résumé= Keycloak est un logiciel open source développé en Java par JBoss une division de red-hat. Il permet de l'authentification unique (Single Sign On) et de la gestion d'habilitation des utilisateurs d'une application ou d'un site internet. Cet outil apporte une sécurisation facile de son application avec peu de code. Plusieurs fonctionnalités sont disponibles tel que la connexion à un réseau social (Facebook, Twitter, ...), la double identification où il faut présenter deux preuves de son identité accéder à une ressource (Code envoyé par sms, ...) ou l'intégration du protocole LDAP (Lightweight Directory Access Protocol) pour l'interrogation ou la modification de services d'annuaires.

=Abstract= Keycloak is an open source software developed in Java by JBoss, a division of red-hat. It allows Single Sign-On, identity and access management for users in an application or a website. The use of this tool is an easy way to secure an application with a little code. A lot of features are available as social login (sign in with Twitter, Facebook, ...), 2 factor-authentification where the user has to confirm his identity with 2 proof (code sent by sms, ...) to get access to a ressource or integration of LDAP protocol (Lightweight Directory Access Protocol) for interrogation and modification of distributed directory information service.

=Synthèse=

Description
Keycloak est un identity manager, un ensemble de processus appelé par une entité pour gérer les habilitations d'un utilisateurs à son système d'information. Cela implique ainsi d’administrer la création, la modification, et les droits d’accès de chaque identité numérique interagissant avec les ressources de l’entité. Comme les autres identity manager il y a des enjeux financiers, sécuritaire et de souplesse pour les applications tout en étant simple et nécessitant très peu de code.

Fonctionnement avec JHipster
Pour son fonctionnement avec JHipster il suffit de sélectionner lors de la création de projet l'option pour utiliser Keycloak. L'application sera générée déjà configuré avec Keycloak et avant de démarrer l'application il faut lancer Keycloak avec un docker-compose et la console d'administration est accessible depuis le port 9080. On y trouve moulte options tel que l'envoie automatique de mail de confirmation d'inscription où gérer les habilitations d'utilisateurs voir même de groupe d'utilisateur.

Exemple d'utilisation


Par exemple un utilisateur d'une application souhaite se connecter, une requête d’authentification sera envoyée. Le service d'authentification va recherché l'utilisateur associé à l'ID envoyé dans sa base de donnée. Ensuite un token unique est généré et envoyé pour que l'utilisateur puisse accéder à l'API qu'il se soit connecté avec un réseau social ou avec un identifiant.

=Conclusion=


 * Les identity et access manager sont des outils très utiles pour les utilisateurs et développeurs
 * Keycloak se démarque des autres solutions
 * Facile à configurer et à prendre en main

=Sources=


 * https://www.keycloak.org
 * https://en.wikipedia.org/wiki/Keycloak
 * https://github.com/mraible/jhipster-oidc-example
 * https://www.jhipster.tech/security/
 * https://witekio.com/fr/blog/authentication-management-focus-keycloak/