4.7 KiB
categories: security
title: HowtoKeycloak
...
Keycloak est un serveur d'authentification et d'autorisation écrit en Java, c'est un "Identity Access Manager" IAM open-source permettant de faire du Single-Sign-On et Single-Sign-Out SS0, c'est à dire d'utiliser un seul compte pour se (dé-)connecter à différents services.
Installation
liens : documentation officielle, git de keycloak
Installer Keycloak en dur avec OpenJDK
# apt install openjdk-11-jre
Lister les releases
$ git ls-remote --tags https://github.com/keycloak/keycloak
Récupérer et extraire le zip de la release souhaité
$ keycloak_release=21.1.1
$ keycloak_zip=keycloak-${keycloak_release}.zip
$ wget https://github.com/keycloak/keycloak/releases/download/${keycloak_release}/keycloak-${keycloak_release}.zip
$ unzip $keycloak_zip
$ keycloak_folder=${keycloak_zip%".zip"}
Configuration
Note : on peut lancer keycloak en mode dev sans aucune configuration pour tester voir administration
On supposera que nous nous trouvons dans le dossier d'installation Keycloack
Créer un administrateur
Ou au lancement du serveur
export KEYCLOAK_ADMIN=<username>
export KEYCLOAK_ADMIN_PASSWORD=<password>
bin/kc.sh start-dev
En mode "click"
Se connecter à http://localhost:8080/ et créer un username et password admin
Se connecter à http://localhost:8080/admin avec les identifiant admin
Base de donnée
Keycloak en production à besoin d'un accés à une base de donné
lien : documentation keycloak configuration bdd
Note : par défaut le schéma sera
keyclaok
est utilisé
Mariadb
pour l'installation et la configuration de Mariadb voir /HowtoMySQL
Il faut créer une base de donnée et utilisateur associé pour Keycloak
db_name=keycloak
user=evocloak
# mysqladmin create $db_name
# mysql
mysql> GRANT ALL PRIVILEGES ON $db_name.* TO '$user'@'%' IDENTIFIED BY '$password';
(Recommandé) Configuration par via fichier configuration
Modifier le fichier conf/keycloak.conf
TODO montrer modif faire etc
Ou démarrer le serveur Keycloak en définissant les options de configuration
bin/kc.sh start --db mariadb --db-url-host mymariadb --db-username evocloak --db-password change_me
Haute disponibilité
keycloak est conçu pour fonctionner en haute disponibilitée avec infinispan (In-Memory Distributed Data Store)
TODO https://www.keycloak.org/server/configuration-production -> https://www.keycloak.org/server/caching
Administration
Lancer Keycloak en mode dev, pour tester Keycloak en http avec des valeurs par defaut ou en mode prod
$ cd $keycloak_folder
$ bin/kc.sh start-dev
$ bin/kc.sh start
Voir les option de démarrage / aide
bin/kc.sh start-dev --help
bin/kc.sh start --help
Lancer Keycloak en dev sur le port 8080
keycloak_http_port=8080
bin/kc.sh start-dev --http-port ${keycloak_http_port}
TODO Build et lancer en mode prod
Gestion des royaumes "realm"
Un royaume est un ensemble isolé d'utilisateurs et d'applications géré par un administrateur
Le royaume master est seulement utilisé pour gérer Keycloak et ne doit pas être utiliser pour gérer d'autres applications
Tester le fonctionnement des royaume voir getting-started-zip
suivre bettement les étapes juqu'a arriver au message "hello, myuser" sur https://www.keycloak.org/app/
Créer un royaume
Dans le menu déroulant tout en haut à gauche choisir "Create Realm"
Choisir un nom de royaume "Realm name" puis le créer avec "Create"
Créer un utilisateur
ATTENTION : nous allons créer un utilisateur dans le royaume sélectionné dans le menu déroulant tout en haut à gauche, sauf cas particulier, il faudra éviter le royaume master
Créer client
TODO ajouter nextcloud https://stackoverflow.com/questions/48400812/sso-with-saml-keycloak-and-nextcloud
User Federation
permet d'avoir acces à LDAP et Active Directory
TODO Connection au à OpenLDAP https://rob-ferguson.me/keycloak-flowable-and-openldap/
TODO Identity providers
TODO Gestion via la cli
:logbook: CLOCK: [2023-06-21 Wed 14:43:19]--[2023-06-21 Wed 15:05:04] => 00:21:45 :END: