wiki/HowtoKeycloak.md
2023-12-22 12:13:41 +01:00

4.9 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 connecter à différents services.

Installation

liens : documentation officielle, git de keycloak

Installer Keycloak sur son hote avec OpenJDK (openjdk-17 pour Keycloak 23)

  # apt install openjdk-17-jre

Lister les releases

  $ git ls-remote --tags https://github.com/keycloak/keycloak
  ...
  99774b3f7a776476e7f04e472e13e3915971a6fb	refs/tags/21.1.2

Récupérer et extraire le zip de la release souhaitée

  $ keycloak_release=23.0.3
  $ 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"}

On peut alors lancer Keycloak en mode dev pour tester ou développer des theme keycloak en configurant son admin:

  • Au lancement du serveur
  export KEYCLOAK_ADMIN=<username>
  export KEYCLOAK_ADMIN_PASSWORD=<password>
  bin/kc.sh start-dev
  • Ou 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

Pour Lancer en production, il va falloir plus de configuration... voir configuration

Configuration pour de la production

On peut specifier la configation via des envs, arguments, fichier de configuration ou KeyStore java Ici simplifier on configurera via son fichier de configuration dans $keycloak_folder/conf/keycloak.conf On supposera que nous nous trouvons dans le dossier d'installation Keycloack

Base de données

Keycloak en production à besoin d'un accès à une base de donné

lien : documentation keycloak configuration bdd

Il faut créer une base de donnée (par défaut le schéma keycloak) et utilisateur associé pour Keycloak

TODO

  • 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}

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/