wiki/HowtoKeycloak.md
2023-06-23 15:54:45 +02:00

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:

documentation keycloak

Ressources

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

https://rob-ferguson.me/