4.6 KiB
Contexte
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.
Keycloak supporte 2 protocoles d'authentification, SAML 2.0 et OIDC
[featureset et presentation](video https://www.youtube.com/watch?v=FyVHNJNriUQ?=8m30s)
Installation
En dur
ressources
Installer OpenJDK
apt install openjdk-11-jre
Lister les release
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
Lancer keycloak depuis son dossier
keycloak_folder=${keycloak_zip%".zip"}
cd $keycloak_folder
bin/kc.sh start-dev
Brancher une base de donnée de prod
doc officielle configuration db
Par defaut le schema keyclaok
est utilisé
Mariadb
pour l'installation et plus de détails coir la doc evolix installation de mariadb
(Recommandé )créer une base de donnée et utilisateur associé pour keycloak voir
db_name=keycloak
user=evocloak
# mysqladmin create $db_name
# mysql
mysql> GRANT ALL PRIVILEGES ON $db_name.* TO '$user'@'%' IDENTIFIED BY '$password';
Démarrer le serveur keycloak et (re-)définit les options de configuration (depuis le dossier keycloak)
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
Utilisation
Administration de Keycloak
On supposera que nous nous trouvons dans le dossier d'installation keycloack
cd $keycloak_folder
Voir les option de démarrage / aide
bin/kc.sh start-dev --help
Lancer Keycloak
Lancer Keycloak en dev sur le port 8080
$keycloak_http_port=8080
bin/kc.sh start-dev --http-port ${keycloak_http_port}
Créer un administrateur
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/
Créer un username et password admin
Se connecter à http://localhost:8080/admin avec les identifiant admin id:: 6491bb83-8229-4bcd-a535-5c8da9f0e556
TODO suite avec capture d'ecran ? sinon voir doc officielle
Gestion des royaumes "realm"
Se connecter à http://localhost:8080/admin avec les identifiant admin
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: