Configuration - SSO

Cette page présente le paramétrage du module d’authentification de la solution Datachain, basé sur Keycloak. Il est nécessaire lorsque la solution n’est pas rattachée à un SSO externe.

Les images sont paramétrables via les fichiers *.env de docker ou des variables d’environnement.

Cette page décrit l’image dc/keycloak en version 9.0.18 (Keycloak 21.1), version de référence actuelle.

Module SSO - Image dc/keycloak

Description de l’image

Description

Brique d’authentification de Datachain. Au premier démarrage, elle crée le realm dc-realm avec les clients, les rôles et le thème de connexion Datachain. Les données (utilisateurs, groupes, sessions) sont stockées dans la base PostgreSQL keycloak.

Taille

~620Mo

Briques techniques

Keycloak 21.1 (Quarkus), démarré en mode proxy edge : le chiffrement TLS est géré par le reverse proxy placé devant le service. Extensions Adobis : deux mappers OpenID Connect pour les groupes de l’utilisateur, et le thème de connexion datachain.

Utilisateur

keycloak (uid 1000, gid 0, groupe root)

Volumes

Pas de volumes. Les données sont dans la base PostgreSQL (voir Gestion des données, image dc/pg_keycloak ou base keycloak de dc/dc_pg).

Logs

Logs du module sur la sortie standard docker

Urls

Port Url Utilité

8080

/auth

Port HTTP du service, sous le chemin /auth :

  • accès à l’API de Keycloak par les autres modules ;

  • interface d’authentification des utilisateurs ;

  • console d’administration de Keycloak.

8080

/auth/health/ready

Contrôle de santé : l’image se déclare saine lorsque cette adresse répond UP. Le contrôle s’exécute toutes les 5 minutes, avec un délai initial de 2 minutes.

8080

/auth/health, /auth/metrics

Supervision (KC_HEALTH_ENABLED et KC_METRICS_ENABLED)

8443

-

Port HTTPS exposé par l’image, mais sans certificat configuré : le TLS est géré en amont, par le reverse proxy.

Variables d’environnement

Pour plus d’information sur le paramétrage natif de Keycloak, voir https://www.keycloak.org/server/all-config. Les variables natives (KC_*, KEYCLOAK_ADMIN*) conservent leur sens d’origine.

Les mots de passe des variables KC_DB_PASSWORD, KEYCLOAK_ADMIN_PASSWORD et DC_DEFAULT_ADMIN_PASSWORD peuvent être fournis par un docker secret, grâce à la variable suffixée par _FILE qui contient le chemin du fichier. Ce sont les seules variables concernées : la règle générale décrite dans A propos des variables d’environnements ne s’applique pas à cette image.

Base de données

Variable Défaut Description

KC_DB

postgres

Paramétrage natif Keycloak : type de base. Ne pas modifier.

KC_DB_URL_HOST

dc-pg-keycloak

Nom DNS du serveur PostgreSQL. A modifier en cas de base externalisée.

KC_DB_URL_PORT

5432

Port du serveur PostgreSQL

KC_DB_URL_DATABASE

keycloak

Nom de la base de données

KC_DB_USERNAME

postgres

Utilisateur de la base de données

KC_DB_PASSWORD

(valeur par défaut de l’image)

Mot de passe de l’utilisateur de la base. A modifier, via cette variable ou KC_DB_PASSWORD_FILE.

KC_DB_PASSWORD_FILE

(vide)

Chemin du fichier (docker secret) qui contient le mot de passe de la base. S’il existe, il remplace KC_DB_PASSWORD.

Fonctionnement de Keycloak

Variable Défaut Description

KEYCLOAK_FRONTEND_URL

http://localhost:8080/auth

URL publique de Keycloak, avec le chemin /auth, telle que les navigateurs l’utilisent. Elle sert d’adresse de référence (hostname-url) et d’émetteur des jetons. A modifier. Lue à chaque démarrage.

KC_HEALTH_ENABLED

true

Active les adresses de contrôle de santé

KC_METRICS_ENABLED

true

Active les métriques de supervision

KC_FEATURES

token-exchange,admin-fine-grained-authz,scripts

Fonctionnalités optionnelles de Keycloak activées : échange de jetons, droits d’administration fins et scripts

Administrateur de Keycloak

Compte d’administration du realm master, créé par Keycloak au premier démarrage.

Variable Défaut Description

KEYCLOAK_ADMIN

admin

Login de l’administrateur Keycloak pour le realm master

KEYCLOAK_ADMIN_PASSWORD

(valeur par défaut de l’image)

Mot de passe de cet administrateur. A modifier, via cette variable ou KEYCLOAK_ADMIN_PASSWORD_FILE.

KEYCLOAK_ADMIN_PASSWORD_FILE

(vide)

Chemin du fichier (docker secret) qui contient le mot de passe. S’il existe, il remplace KEYCLOAK_ADMIN_PASSWORD.

Realm Datachain

Ces variables sont insérées dans le fichier d’import du realm dc-realm au démarrage du conteneur. Keycloak n’importe ce fichier que si le realm n’existe pas encore : elles ne sont donc prises en compte qu’au premier démarrage. Ensuite, toute modification se fait dans la console d’administration de Keycloak (clients, internationalisation).

Variable Défaut Description

DATACHAIN_CLIENT_URL

http://localhost:4200

URL publique de Datachain. Alimente l’adresse de base et les adresses de redirection autorisées (<url>/) des clients dc_front et dc_core. *A modifier.

DC_CONSOLE_CLIENT_URL

http://localhost:4300

URL publique de la Console. Alimente le client dc_console. A modifier.

DC_MARKETPLACE_CLIENT_URL

http://localhost:4400

URL publique de la Marketplace. Alimente le client dc_marketplace. A modifier.

INTERNALIZATION_ENABLED

true

Active l’internationalisation du realm

INTERNALIZATION_LOCALES

["fr","en"]

Langues proposées (format JSON)

INTERNALIZATION_DEFAULT_LOCALE

fr

Langue par défaut

Premier administrateur Datachain

Ces variables ne sont lues que par le script /create_default_admin_dc.sh de l’image (voir ci-dessous).

Variable Défaut Description

DC_DEFAULT_ADMIN

admin

Login de l’administrateur Datachain créé dans le realm dc-realm

DC_DEFAULT_ADMIN_PASSWORD

(valeur par défaut de l’image)

Mot de passe de cet administrateur. A modifier, via cette variable ou DC_DEFAULT_ADMIN_PASSWORD_FILE.

DC_DEFAULT_ADMIN_PASSWORD_FILE

(vide)

Chemin du fichier (docker secret) qui contient le mot de passe. S’il existe, il remplace DC_DEFAULT_ADMIN_PASSWORD.

La variable DC_DEFAULT_ADMIN_CREATE, présente dans l’image, n’est lue par aucun script : elle n’a pas d’effet. Le premier administrateur Datachain n’est pas créé automatiquement au démarrage.

Création du premier administrateur Datachain

Le realm importé ne contient aucun utilisateur. Une fois Keycloak démarré, le script /create_default_admin_dc.sh de l’image crée l’administrateur Datachain : il attend que Keycloak soit prêt, puis crée l’utilisateur DC_DEFAULT_ADMIN dans le realm dc-realm, lui attribue son mot de passe et les rôles realm-admin (client realm-management) ainsi que dc_admin, dc_user, dc_member et dc_project (client dc_backend). Il utilise le compte KEYCLOAK_ADMIN du realm master.

Le script est à exécuter une seule fois dans le conteneur Keycloak :

docker exec -i <identifiant du conteneur keycloak> sh -c 'sh /create_default_admin_dc.sh'

Les exemples de déploiement fournis (scripts/insert_first_admin.sh) exécutent cette commande ; voir Principes généraux.

Contenu du realm importé

Le realm dc-realm (nom affiché DataChain) est créé avec les caractéristiques suivantes :

  • thème de connexion : datachain ;

  • durée de vie d’un jeton d’accès : 5 minutes ; inactivité maximale d’une session SSO : 4 heures ; durée maximale d’une session SSO : 5 heures ;

  • TLS exigé pour les connexions externes (sslRequired : external) ;

  • protection contre les attaques par force brute : désactivée ;

  • serveur SMTP : un serveur interne Adobis est préconfiguré. A reconfigurer dans la console d’administration de Keycloak (Realm settings, Email) pour que Keycloak puisse envoyer des e-mails.

Clients du realm :

Client Type Remarques

dc_front

Public

Interface web de Datachain. Redirection autorisée vers DATACHAIN_CLIENT_URL/ et vers https://oauth.powerbi.com/ (connecteur PowerBi).

dc_core

Confidentiel

Module Datachain Core. Redirection autorisée vers DATACHAIN_CLIENT_URL/*.

dc_console

Confidentiel

Module Console. Redirection autorisée vers DC_CONSOLE_CLIENT_URL/*.

dc_marketplace

Confidentiel

Module Marketplace. Redirection autorisée vers DC_MARKETPLACE_CLIENT_URL/*.

dc_backend

Confidentiel, accès par jeton uniquement (bearer-only)

Porte les rôles Datachain : dc_admin, dc_user, dc_member et dc_project.

dc_backend_keycloak

Confidentiel, compte de service

Compte de service du backend vers Keycloak.

dc_spark_backend

Confidentiel, compte de service

Compte de service du module Spark.

dc_exposition

Public

Client public avec accès direct (direct access grants), sans adresse de redirection.

Les secrets des clients confidentiels (dc_core, dc_console, dc_marketplace, dc_backend_keycloak, dc_spark_backend) sont définis dans le fichier d’import fourni avec l’image : ils sont identiques sur toutes les installations. Ils doivent être régénérés dans la console d’administration de Keycloak (client, onglet Credentials), puis reportés dans la configuration des modules concernés : voir les pages Datachain Core, Console et Marketplace.

Fichier de configuration

Exemple de fichier keycloak.env pour un déploiement Docker Swarm (les valeurs entre chevrons sont à remplacer) :

# Adresses publiques
KEYCLOAK_FRONTEND_URL=https://<nom de domaine keycloak>/auth
DATACHAIN_CLIENT_URL=https://<nom de domaine datachain>
DC_CONSOLE_CLIENT_URL=https://<nom de domaine console>
DC_MARKETPLACE_CLIENT_URL=https://<nom de domaine marketplace>

# Base de données
KC_DB_URL_HOST=<hôte postgresql>
KC_DB_URL_DATABASE=keycloak
KC_DB_USERNAME=<utilisateur>
KC_DB_PASSWORD_FILE=/run/secrets/kc_db_password

# Administrateurs
KEYCLOAK_ADMIN=<administrateur keycloak>
KEYCLOAK_ADMIN_PASSWORD_FILE=/run/secrets/kc_admin_password
DC_DEFAULT_ADMIN=<administrateur datachain>
DC_DEFAULT_ADMIN_PASSWORD_FILE=/run/secrets/dc_admin_password

Le service doit être exposé par le reverse proxy sous le chemin /auth vers le port 8080 (par exemple avec Traefik, une règle Host(…​) && PathPrefix(/auth`)`).

Dernière mise à jour le 2 novembre 2026 à 15:16