wiki/HowtoKeycloak.md
2023-06-22 15:54:26 +02:00

5.3 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 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
  • [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é

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"

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

  • 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

  • User Federation permet d'avoir acces à LDAP et Active Directory

  • TODO Identity providers

TODO Gestion via la cli

Ressources