4.4 KiB
Contexte
Keycloak est un Identity Access Manager IAM open-source permettant de faire du Single-Sign-On SS0, c'est à dire d'utiliser un seul compte pour se connecter à différents services.
Keycloak supporte principalement 2 protocoles d'authentification
-
SAML 2.0 (Security Assertion Markup Language)
-
authentification de l'utilisateur
- SAML assertion (XML signé numeriquement par le royaume) contenant les information sur les accés de l'utilisateur
-
accés au service
- via un SAML assertion
-
-
OIDC (OpenID Connect)
-
authentification de l'utilisateur
-
-> identity token : infos utilisateur qui l'indentifie
-
-> access token : information sur les accés de l'utilisateur, signé numeriquement par le royaume
-
-
accés au service
- via un access token
-
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
-
Mariadb
-
Démarrer le serveur keycloak et (re-)définit les options de configuration
-
bin/kc.sh start --db mariadb --db-url-host mymariadb --db-username myuser --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
-
TODO finir
-
-
TODO Créer client
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: