wiki/HowtoKeycloak.md
2023-06-22 16:06:45 +02:00

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

doc officielle

git de keycloak

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:

doc

Ressources

https://github.com/thomasdarimont/awesome-keycloak

https://rob-ferguson.me/