Français
Commencer

← Tous les templates · Mots de passe et connexion

Déployez Keycloak en un clic

La gestion des identités et des accès open source : l’authentification unique (SSO) pour vos applications, avec OpenID Connect et SAML

Une alternative auto-hébergée à Auth0 et Okta.

Qu’est-ce que Keycloak ?

Keycloak est un serveur de gestion des identités et des accès : vos applications lui confient la connexion, et une personne connectée une fois l’est à toutes. Il parle OpenID Connect, OAuth 2.0 et SAML 2.0, si bien que la plupart des applications et des frameworks s’y connectent avec leurs bibliothèques standard. Il connecte les gens avec un mot de passe, une clé d’accès ou un compte social comme Google ou GitHub, ajoute l’authentification à deux facteurs avec des codes à usage unique, synchronise les utilisateurs depuis LDAP et Active Directory, et laisse chaque utilisateur gérer son profil, son mot de passe et ses sessions dans sa console Compte.

Keycloak est un projet en incubation de la Cloud Native Computing Foundation, utilisé aussi bien par des entreprises que dans des homelabs pour placer une seule connexion devant de nombreuses applications. Ce template le fait tourner en mode production avec PostgreSQL derrière le proxy, et crée l’administrateur du domaine (realm) master à partir des champs avant que Keycloak ne réponde à quiconque. Le revers : Keycloak est puissant et a beaucoup de réglages, donc un premier client demande un peu de lecture, et il tourne sur Java, qui prend plus de mémoire que la plupart des serveurs de connexion.

Hébergement de Keycloak sur Pethost

  1. Vous vous connectez à Pethost avec une clé d’accès, GitHub ou Google. Pas encore de machine ? Vous choisissez une offre, et le lien attend qu’elle soit prête.
  2. Nouveau projet s’ouvre sur Keycloak. Vous remplissez ce qu’il demande et cliquez sur Créer le projet : Nom d’utilisateur, Mot de passe administrateur.
  3. En une minute ou deux, Keycloak tourne à sa propre adresse en HTTPS. Ses secrets sont créés au hasard, et ses données sont dans la sauvegarde nocturne.
  4. C’est un projet comme les autres : vous ou votre agent pouvez le modifier, revenir à une version précédente ou le restaurer.

Questions sur Keycloak

Keycloak est-il gratuit ?

Oui. Keycloak est open source sous licence Apache 2.0, sans édition payante et sans limite d’utilisateurs ni d’applications. Red Hat vend du support pour sa propre version, le Red Hat build of Keycloak.

Keycloak ou Auth0 : lequel choisir ?

Les deux connectent les utilisateurs en OpenID Connect et SAML, avec connexion sociale et authentification à deux facteurs. Auth0 est un service cloud facturé au nombre d’utilisateurs actifs par mois, alors que vous faites tourner Keycloak vous-même, gratuitement quel que soit le nombre d’utilisateurs, au prix de son entretien.

Keycloak peut-il connecter les utilisateurs avec Google ou GitHub ?

Oui. La section « Fournisseurs d’identités » d’un domaine (realm) ajoute Google, GitHub, Facebook, Microsoft et d’autres, ou tout fournisseur OpenID Connect ou SAML 2.0, sous forme de boutons sur sa page de connexion, sans rien changer à vos applications.

Keycloak prend-il en charge l’authentification à deux facteurs et les clés d’accès ?

Oui. Il accepte les codes à usage unique d’applications comme Google Authenticator ou FreeOTP, les codes de récupération et les clés d’accès, et un domaine peut les exiger de tous ou laisser les utilisateurs les activer dans la console Compte.

Pourquoi Keycloak dit-il que je suis un administrateur temporaire ?

Keycloak marque comme temporaire l’administrateur qu’il crée à son premier démarrage, et en demande un permanent : ajoutez un utilisateur dans le domaine (realm) master, donnez-lui le rôle admin dans l’onglet « Mapping de rôle », connectez-vous avec ce compte et supprimez l’administrateur temporaire.

De combien de mémoire et de disque Keycloak a-t-il besoin ?

Keycloak tourne sur Java : environ 550 MB de mémoire au repos avec Postgres, davantage avec beaucoup d’utilisateurs et de sessions ; sa base de données reste petite. Sur Pethost, l’offre Starter lui suffit, avec de la place pour d’autres applications à côté.

Le fichier Docker Compose de Keycloak

Le template, c’est ce compose.yaml et les variables écrites dans le .env du projet à sa création. Pethost exécute le fichier tel qu’il est écrit.

Conteneurs : keycloak (quay.io/keycloak/keycloak:26.8), postgres (postgres:18-alpine).

Volumes, dans la sauvegarde nocturne : db.

services:
  keycloak:
    image: quay.io/keycloak/keycloak:26.8
    restart: unless-stopped
    command: start
    environment:
      KC_DB: postgres
      KC_DB_URL: jdbc:postgresql://postgres:5432/keycloak
      KC_DB_USERNAME: keycloak
      KC_DB_PASSWORD: ${POSTGRES_PASSWORD}
      KC_HOSTNAME: ${URL}
      # The proxy serves HTTPS and passes requests on over HTTP, saying in X-Forwarded-* who sent
      # them and how.
      KC_HTTP_ENABLED: "true"
      KC_PROXY_HEADERS: xforwarded
      KC_HEALTH_ENABLED: "true"
      # The administrator of the master realm is made from these at the first start, before
      # Keycloak answers anyone; Keycloak calls it temporary until a permanent one replaces it.
      KC_BOOTSTRAP_ADMIN_USERNAME: ${ADMIN_USERNAME}
      KC_BOOTSTRAP_ADMIN_PASSWORD: ${ADMIN_PASSWORD}
    depends_on:
      postgres:
        condition: service_healthy
    # The port listens before Keycloak is ready: the deploy waits for its readiness, which its
    # management port answers. The image has no curl: bash asks it.
    healthcheck:
      test: ["CMD-SHELL", "exec 3<>/dev/tcp/127.0.0.1/9000 && printf 'GET /health/ready HTTP/1.1\\r\\nHost: localhost\\r\\nConnection: close\\r\\n\\r\\n' >&3 && grep -q '\"UP\"' <&3"]
      interval: 5s
      timeout: 5s
      retries: 5
      start_period: 180s

  postgres:
    image: postgres:18-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: keycloak
      POSTGRES_USER: keycloak
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - db:/var/lib/postgresql
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U keycloak -d keycloak"]
      interval: 5s
      timeout: 5s
      retries: 10
      start_period: 30s

volumes:
  db:

Aussi dans Mots de passe et connexion