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 |
Module SSO - Image dc/keycloak
Description de l’image
Description |
Brique d’authentification de Datachain. Au premier démarrage, elle crée le realm |
|||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Taille |
~620Mo |
|||||||||||||||
Briques techniques |
Keycloak 21.1 (Quarkus), démarré en mode proxy |
|||||||||||||||
Utilisateur |
|
|||||||||||||||
Volumes |
Pas de volumes. Les données sont dans la base PostgreSQL (voir Gestion des données, image |
|||||||||||||||
Logs |
Logs du module sur la sortie standard docker |
|||||||||||||||
Urls |
|
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 |
(vide) |
Chemin du fichier (docker secret) qui contient le mot de passe de la base. S’il existe, il remplace |
Fonctionnement de Keycloak
| Variable | Défaut | Description |
|---|---|---|
KEYCLOAK_FRONTEND_URL |
URL publique de Keycloak, avec le chemin |
|
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 |
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 |
(vide) |
Chemin du fichier (docker secret) qui contient le mot de passe. S’il existe, il remplace |
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 |
URL publique de Datachain. Alimente l’adresse de base et les adresses de redirection autorisées ( |
|
DC_CONSOLE_CLIENT_URL |
URL publique de la Console. Alimente le client |
|
DC_MARKETPLACE_CLIENT_URL |
URL publique de la Marketplace. Alimente le client |
|
INTERNALIZATION_ENABLED |
true |
Active l’internationalisation du realm |
INTERNALIZATION_LOCALES |
|
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_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 |
(vide) |
Chemin du fichier (docker secret) qui contient le mot de passe. S’il existe, il remplace |
|
La variable |
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 |
dc_core |
Confidentiel |
Module Datachain Core. Redirection autorisée vers |
dc_console |
Confidentiel |
Module Console. Redirection autorisée vers |
dc_marketplace |
Confidentiel |
Module Marketplace. Redirection autorisée vers |
dc_backend |
Confidentiel, accès par jeton uniquement (bearer-only) |
Porte les rôles Datachain : |
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 ( |
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