A Guide to Deploying Onyxia On-Premises (part 1): basic installation and user account management with Keycloak
Onyxia est un projet open source porté par l’INSEE (France) et créé initialement pour faciliter la mise en place d’un environnement de travail pour les personnels de l’institut. Onyxia fournit une application web pour lancer et configurer un environnement de travail. Il permet ainsi à l’utilisateur de choisir des outils (VSCode, Jupyter, etc.), des ressources (CPU, GPU et RAM) et de connecter des services de stockage (type S3) sans avoir à gérer directement les complexités du cloud ou de l’infrastructure sous-jacente.
Onyxia s’appuie sur Kubernetes. Les environnements de travail sont packagés dans des Charts Helm et configurables au niveau de l’interface web fournit par Onyxia. L’INSEE propose une instance de Onyxia appelée SPPCloud, elle est gratuite pour toutes les administrations publiques françaises. Toutefois, cette instance n’est pas configurable et les ressources doivent être partagées avec un nombre croissant d’utilisateurs.
L’installation d’une instance Onyxia sur un cluster Kubernetes est possible et c’est l’objectif de ce billet de blog. La documentation d’installation de Onyxia est très bien faite, mais un peu trop générique pour correspondre à des cas spécifiques et de toute façon il n’est pas pensable de traiter chaque cas. Par ailleurs, la documentation n’est pas forcément à jour et les dernières versions des outils tiers comme Keycloak et Vault ne sont pas disponibles.
Dans ce billet de blog, nous adoptorons une approche incrémentale, en commençant avec l’installation de Onyxia, puis l’ajout et l’intégration du gestionnaire d’identification et d’autentification Keycloak. Dans le cas spécifique de Keycloak, nous détaillerons la gestion implicite des utilisateurs via Keycloak, avant de présenter la configuration nécessaire pour fédérer une source d’identité externe qui supporte OpenID.
D’autres points pourront être abordés dans des prochains billets, notamment l’installation et l’intégration d’un stockage S3, la gestion des secrets avec Vault, ainsi que l’utilisation de Prometheus pour la supervision du cluster Kubernetes. Sur cette base, nous mettrons en place des stratégies d’allocation de ressources afin d’éviter, par exemple, l’accaparement des ressources critiques telles que les GPU. Enfin, nous verrons ultérieurement comment créer ses propres services.
Enfin, contrairement à la documentation officielle d’Onyxia qui s’appuie sur Argo CD pour le déploiement, nous réaliserons ici toutes les opérations via l’outil en ligne de commande kubectl. Bien que l’approche avec Argo CD soit recommandée pour un environnement de production, l’objectif de ce billet est de proposer une première installation simple afin de découvrir et tester la plateforme Onyxia.
Prérequis
Pour mettre en œuvre l’ensemble des éléments présentés, vous aurez besoin d’un cluster Kubernetes. À ce sujet, je vous invite à consulter les deux billets de blog que j’ai déjà publiés.
- A step-by-step pratical guide for deploying NVIDIA GPUs on Kubernetes
- Advanced Kubernetes Deployment on an NVIDIA GPUs Cluster
Il vous faudra également disposer d’un nom de domaine. Nous utiliserons dans cet exemple le domaine fictif : *.mydomain.fr.
Onyxia tout simplement
Cette section décrit la configuration et l’installation d’Onyxia à partir d’un chart Helm. La personnalisation de l’apparence constitue la seule étape de configuration abordée. Les autres paramètres seront traités ultérieurement, après la mise en place du système d’authentification avec Keycloak.
Installation Onyxia
- Créer un fichier minimaliste onyxia-values.yaml pour que l’installation se déroule sans problème. Ainsi, un seul utilisateur sera défini et l’apparence conservera les paramètres par défaut.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
ingress:
enabled: true
hosts:
- host: onyxia.mydomain.fr
web:
env:
api:
regions:
[
{
id: "onyxia_id",
name: "Onyxia",
description: "Instance Onyxia de TEST.",
services: {
type: "KUBERNETES",
singleNamespace: true,
authenticationMode: "serviceAccount",
namespacePrefix: "onyxia-user-",
expose: {
domain: "lab-onyxia.mydomain.fr"
},
},
},
]
- Ajouter le dépôt Helm de Onyxia à la configuration Helm locale et vérifier que ce dépôt est disponible.
1
2
helm repo add onyxia https://inseefrlab.github.io/onyxia
helm repo list
La sortie console attendue :
1
2
3
4
5
6
NAME URL
ingress-nginx https://kubernetes.github.io/ingress-nginx
nvidia https://helm.ngc.nvidia.com/nvidia
onyxia https://inseefrlab.github.io/onyxia
prometheus-community https://prometheus-community.github.io/helm-charts
...
- Déployer le chart Onyxia dans sa version 10.28.9.
1
helm install onyxia onyxia/onyxia -f onyxia-values.yaml --version 10.28.9 --create-namespace --namespace onyxia
La sortie console attendue :
1
2
3
4
5
6
7
NAME: onyxia
LAST DEPLOYED: Fri Oct 3 17:26:00 2025
NAMESPACE: onyxia
STATUS: deployed
REVISION: 1
NOTES:
Enjoy Onyxia :)
Deux pods devront être créées : l’un pour la partie serveur, qui fournit l’API, et l’autre pour la partie interface utilisateur.
- Tester la disponibilité de ces deux pods par la ligne de commande suivante.
1
kubectl get pods -n onyxia
La sortie console attendue :
1
2
3
NAME READY STATUS RESTARTS AGE
onyxia-api-54594bb97d-xxzcq 1/1 Running 0 28m
onyxia-web-67666469d8-27xpb 1/1 Running 0 28m
- Ouvrir un navigateur web et saisir l’URL suivante : https://onyxia.mydomain.fr

Vous remarquerez sur la partie en bas à droite la version courante de Onyxia (10.28.9).
Mise à jour de la version de Onyxia
Lorsque des mises à jour de version ou de configuration de Onyxia seront nécessaires, ce qui se produit régulièrement, il suffira de suivre les étapes ci-dessous pour les appliquer.
- Forcer la mise à jour du dépôt
1
helm repo update onyxia
La sortie console attendue :
1
2
3
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "onyxia" chart repository
Update Complete. ⎈Happy Helming!⎈
- Afficher les versions disponibles du dépôt Onyxia.
1
helm search repo onyxia -l
La sortie console attendue :
1
2
3
4
5
6
7
8
NAME CHART VERSION APP VERSION DESCRIPTION
onyxia/onyxia 10.29.2 Onyxia is your datalab's hub.
onyxia/onyxia 10.29.1 Onyxia is your datalab's hub.
onyxia/onyxia 10.29.0 Onyxia is your datalab's hub.
onyxia/onyxia 10.28.10 Onyxia is your datalab's hub.
onyxia/onyxia 10.28.9 Onyxia is your datalab's hub.
onyxia/onyxia 10.28.8 Onyxia is your datalab's hub.
...
- Mettre à jour la version Onyxia en spécifiant la version souhaitée.
1
helm update onyxia onyxia/onyxia -f onyxia-values.yaml --version 10.29.2 --create-namespace --namespace onyxia
Personnalisation de Onyxia
Intéressons nous maintenant à personnaliser l’affichage de l’instance Onyxia déployée. Il s’agit de compléter les éléments de la clé env depuis le fichier onyxia-values.yaml. L’ensemble des paramètres sont disponibles depuis le dépôt Github du projet qui gère l’interface utilisateur : onyxia/web/.env. La documentation est bien faite, car chaque paramètre est accompagné d’une illustration indiquant précisément l’endroit où il est configuré.
- Éditer le fichier onyxia-values.yaml en ajoutant le contenu de la clé
env.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
ingress:
enabled: true
hosts:
- host: onyxia.mydomain.fr
web:
env:
HEADER_TEXT_BOLD: Test
TAB_TITLE: Onyxia Test
HOMEPAGE_HERO_TEXT: |
{
"fr": "Bienvenue dans la version Test",
"en": "Welcome to the Test version "
}
PALETTE_OVERRIDE: |
{
focus: {
main: "#067A76",
light: "#0AD6CF",
light2: "#AEE4E3"
},
dark: {
main: "#2D1C3A",
light: "#4A3957",
greyVariant1: "#22122E",
greyVariant2: "#493E51",
greyVariant3: "#918A98",
greyVariant4: "#C0B8C6"
},
light: {
main: "#F7F5F4",
light: "#FDFDFC",
greyVariant1: "#E6E6E6",
greyVariant2: "#C9C9C9",
greyVariant3: "#9E9E9E",
greyVariant4: "#747474"
}
}
api:
...
- Mettre à jour la version Onyxia.
1
helm update onyxia onyxia/onyxia -f onyxia-values.yaml --version 10.29.2 --create-namespace --namespace onyxia

Onyxia avec des utilisateurs
L’identification (le fait de déclarer qui l’on est) et l’authenfication (le fait de prouver que l’on est bien celui qu’on prétend être) seront déléguées à Keycloak. Nous utiliserons la version 26.3.3 de Keycloak depuis le chart Helm en version 25.2.0. À noter que depuis août 2025, Bitnami ne proposera gratuitement qu’un ensemble réduit d’images sécurisées sous le tag latest, tandis que les anciennes versions seront déplacées vers le dépôt bitnamilegacy sans mises à jour. Nous allons nous limiter à utiliser la version 25.2.0 disponible dans le dépôt bitnamilegacy.
Installation Keycloak
- Créer un fichier keycloak-values.yaml et copier le contenu suivant tout en l’adaptant à votre besoin (changement de domaine). Penser à changer la valeur de
mydomain.frpar le domaine que vous souhaitez.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
postgresql:
enabled: true
image:
repository: bitnamilegacy/postgresql
auth:
postgresPassword: "test"
username: "keycloak"
password: "test"
database: "keycloak"
global:
security:
allowInsecureImages: true
image:
repository: bitnamilegacy/keycloak
auth:
adminUser: keycloak
adminPassword: test
production: true
tls:
enabled: false
autoGenerated:
enabled: false
proxyHeaders: xforwarded
proxy: edge
httpRelativePath: "/auth/"
replicaCount: 1
ingress:
enabled: true
annotations:
nginx.ingress.kubernetes.io/proxy-buffer-size: 128k
hostname: auth.lab-onyxia.mydomain.fr
extraTls:
- hosts:
- auth.lab-onyxia.mydomain.fr
extraStartupArgs: "--features=preview --log-level=org.keycloak.events:debug"
extraEnvVars:
- name: ONYXIA_RESOURCES_ALLOWED_ORIGINS
value: "https://onyxia.mydomain.fr, http://localhost, http://127.0.0.1"
- name: KEYCLOAK_LOG_LEVEL
value: DEBUG
initContainers: |
- name: realm-ext-provider
image: curlimages/curl
imagePullPolicy: IfNotPresent
command:
- sh
args:
- -c
- |
curl -L -f -S -o /extensions/onyxia-web.jar https://github.com/InseeFrLab/onyxia/releases/download/v10.28.8/keycloak-theme.jar
volumeMounts:
- name: empty-dir
mountPath: /extensions
subPath: app-providers-dir
externalDatabase:
host: keycloakv3-postgresql
port: 5432
user: keycloak
password: test
database: keycloak
Dans ce fichier plusieurs choses : l’utilisation des images du dépôt bitnamilegacy en attente d’avoir les dernières versions. L’initialisation en utilisant initContainers afin de télécharger un thème spécifique. Les mots de passes par défaut devront être changé après l’installation. Le sous-domaine de Keycloak sera auth.lab-onyxia.
1
helm install onyxiakeycloak oci://registry-1.docker.io/bitnamicharts/keycloak --version 25.2.0 -f keycloak-values.yaml --create-namespace --namespace onyxia-keycloak
Le résulat attendu est le suivant
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Pulled: registry-1.docker.io/bitnamicharts/keycloak:25.2.0
Digest: sha256:3e12451e0300902bafa1e588e62cce8ad3467dc3d6bf15352c25a0393a75fc6e
NAME: onyxiakeycloak
LAST DEPLOYED: Thu Oct 2 17:07:49 2025
NAMESPACE: onyxia-keycloak
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: keycloak
CHART VERSION: 25.2.0
APP VERSION: 26.3.3
⚠ WARNING: Since August 28th, 2025, only a limited subset of images/charts are available for free.
Subscribe to Bitnami Secure Images to receive continued support and security updates.
More info at https://bitnami.com and https://github.com/bitnami/containers/issues/83267
** Please be patient while the chart is being deployed **
Keycloak can be accessed through the following DNS name from within your cluster:
onyxiakeycloak.onyxia-keycloak.svc.cluster.local (port 80)
To access Keycloak from outside the cluster execute the following commands:
1. Get the Keycloak URL and associate its hostname to your cluster external IP:
export CLUSTER_IP=$(minikube ip) # On Minikube. Use: `kubectl cluster-info` on others K8s clusters
echo "Keycloak URL: http://auth.lab-onyxia.mydomain.fr/"
echo "$CLUSTER_IP auth.lab-onyxia.mydomain.fr" | sudo tee -a /etc/hosts
2. Access Keycloak using the obtained URL.
3. Access the Administration Console using the following credentials:
echo Username: keycloak
echo Password: $(kubectl get secret --namespace onyxia-keycloak onyxiakeycloak -o jsonpath="{.data.admin-password}" | base64 -d)
WARNING: There are "resources" sections in the chart not set. Using "resourcesPreset" is not recommended for production. For production installations, please set the following values according to your workload needs:
- resources
+info https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
⚠ SECURITY WARNING: Original containers have been substituted. This Helm chart was designed, tested, and validated on multiple platforms using a specific set of Bitnami and Tanzu Application Catalog containers. Substituting other containers is likely to cause degraded security and performance, broken chart features, and missing environment variables.
Substituted images detected:
- docker.io/bitnamilegacy/keycloak:26.3.3-debian-12-r0
⚠ SECURITY WARNING: Verifying original container images was skipped. Please note this Helm chart was designed, tested, and validated on multiple platforms using a specific set of Bitnami and Bitnami Secure Images containers. Substituting other containers is likely to cause degraded security and performance, broken chart features, and missing environment variables.
Deux pods devront être créés à savoir celui pour la base de données PostgreSQL et celui pour Keycloak. Ce dernier étant long à démarrer, tester la disponibilité des pods par la ligne de commande suivante.
1
kubectl get pods -n onyxia-keycloak
Le résultat attendu
1
2
3
NAME READY STATUS RESTARTS AGE
onyxiakeycloak-0 1/1 Running 1 (8m13s ago) 10m
onyxiakeycloak-postgresql-0 1/1 Running 0 10m
- Ouvrir un navigateur web et saisir l’URL suivante : https://auth.lab-onyxia.mydomain.fr/auth

Le nom d’utilisateur et le mot de passe ont été précisé dans le fichier keycloak-values.yaml à savoir keycloak et test.
La première chose que nous allons effectuer est la création d’un nouveau compte administrateur car le compte keycloak est temporaire (recommandation de Keycloak).
- Depuis le realm
keycloakchoisir le menu Users et créer un utilisateuradmin(Add User). Depuis l’onglet Role Mapping assigner le rôleadmin(Assign role -> Realm roles et choisiradmin) et changer enfin le mot de passe via l’onglet Credentials.

Intégration Keycloak avec Onyxia
Intéressons-nous maintenant à l’intégration de Keycloak avec Onyxia, afin que Keycloak devienne le gestionnaire de compte utilisateur pour Onyxia. Dans cette première version d’intégration, les utilisateurs seront créés par l’administrateur de Keycloak et nous désactiverons la création de compte à la volée.
- Créer un nouveau realm
onyxiavia le menu Manage realms. Vous devrez cliquer sur Create realm et saisir dans Realm name la valeuronyxia. Pour valider cliquer sur Create.

- Sélectionner le nouveau realm
onyxia

Toutes les demandes d’autorisation pour Onyxia seront désormais gérées depuis ce realm. Il est toutefois nécessaire de procéder à sa configuration, notamment pour définir le thème graphique utilisé sur les formulaires d’identification ou encore pour déterminer si la création de comptes est autorisée.
-
Depuis le menu de latéral, cliquer sur Realm settings.
-
Depuis l’onglet Login, désactiver l’option de création d’utilisateur (
User registration) afin d’éviter de pouvoir créer à la volée des utilisateurs.

- Depuis l’onglet Email configurer les informations pour permettre l’envoi d’email. Les paramètres à choisir dépendent des informations dont vous disposez. Le bouton Test connection vous permet de tester si tout fonctionne correctement.

- Depuis l’onglet Themes choisir le thème fourni par Onyxia pour les champs d’édition Login theme et Email theme.

- Depuis l’onglet Localization ajouter de nouvelles langues. L’identification devra pouvoir gérer l’anglais et le français.

Il nous reste maintenant à créer un client Keycloak afin de permettre à Onyxia de s’appuyer sur lui pour l’authentification et de lui faire confiance.
- Créer un nouveau client via le menu Clients, puis cliquer sur Create client.

- Dans le champ d’édition Client ID saisir la valeur
onyxia.

- Sélectionner l’option
Direct access grantspour que le nom d’utilisateur le mot de passe puisse être envoyé à Keycloak afin de recevoir par la suite un jeton d’accès.

- Saisir dans le champ d’édition Rool URL la valeur
https://onyxia.mydomain.fr, puis dans le champ d’édition Valid redirects URIs la valeurhttps://onyxia.mydomain.fr/*et enfin dans le champ d’éditionWeb originsla valeur*.

- Après la création du client, modifier la valeur pour le champ d’édition Login theme en choisissant
onyxia.

Pour tester le client Keycloak, il faut au moins créer un utilisateur.
- Depuis Keycloak avec le realm
onyxiacourant, créer un compte utilisateurtest.
Du côté configuration Onyxia, il faut modifier le fichier onyxia-values.yaml pour préciser le client Keycloak précédemment construit.
- Modifier le fichier onyxia-values.yaml afin d’ajouter les éléments de la clé
envainsi que le changement pour la valeursingleNamespace. L’authentification se fera à partir d’OpenID.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
ingress:
enabled: true
hosts:
- host: onyxia.mydomain.fr
web:
...
api:
serviceAccount:
create: true
clusterAdmin: true
env:
security.cors.allowed_origins: "*"
authentication.mode: "openidconnect"
oidc.issuer-uri: "https://auth.lab-onyxia.mydomain.fr/auth/realms/onyxia"
oidc.clientID: "onyxia"
oidc.audience: "onyxia"
regions:
[
{
id: "onyxia_id",
name: "Onyxia",
description: "Instance Onyxia de TEST.",
services: {
type: "KUBERNETES",
singleNamespace: false,
authenticationMode: "serviceAccount",
namespacePrefix: "onyxia-user-",
expose: {
domain: "lab-onyxia.mydomain.fr"
},
},
},
]
- Mettre à jour la version Onyxia.
1
helm update onyxia onyxia/onyxia -f onyxia-values.yaml --version 10.29.2 --create-namespace --namespace onyxia
- Depuis l’application web Onyxia, cliquer sur le bouton Connexion (en haut à droite) pour faire apparaître le formulaire d’authentification.

À cette étape Onyxia a pu appeler le client onyxia de Keycloak puisque le formulaire d’authentification est affiché.
- Se connecter avec le compte utilisateur
testet malheureusement vous devriez obtenir une erreur de type 401.
Pour comprendre l’erreur, afficher la console développeur du navigateur et chercher la requête correspondant à l’erreur 401. Au niveau de l’en-tête de la réponse, la clé Www-Authenticate devrait retourner cette erreur Bearer error="invalid_token", error_description="An error occurred while attempting to decode the Jwt: The required audience onyxia is missing", error_uri="https://tools.ietf.org/html/rfc6750#section-3.1. Elle précise que le jeton JWT (fourni par OpenID) ne contient pas dans la clé aud la valeur onyxia. La configuration realm onyxia depuis Keycloak doit être modifiée.
- Depuis le menu latéral, cliquer sur Client scopes puis sur Create client scope. Dans le champ d’édition
Namesaisir la valeuronyxia.

-
Une fois créée, sélectionner l’onglet Mappers puis cliquer sur Configure a new mapper et choisir
Audience. -
Dans le champ d’édition
Name, saisir la valeurAudience for Onyxiaet dans le champ d’éditionIncluded Client Audience, sélectionner la valeuronyxiapuis cliquer surSave.

Il reste désormais à ajouter cette nouvelle configuration au client onyxia de Keycloak.
- Depuis le menu latéral, cliquer sur Clients et sélectionner
onyxia. Depuis l’onglet Client scopes, cliquer sur Add client scope et sélectionneronyxia.

Il est possible de vérifier le contenu du jeton JWT directement depuis Keycloak en spécifiant un utilisateur disponible dans la base.
- Depuis le menu latéral, cliquer sur Client et sélectionner le client
onyxia. Depuis l’onglet Client scopes, sélectionner le sous onglet Evaluate. Dans le champ d’édition Users saisirtest.

Comme vous pouvez le remarquer, la clé aud contient deux valeurs qui sont onyxia et account.
- Depuis l’interface web de Onyxia, se connecter et normalement vous ne devriez pas obtenir d’erreur.
Configuration d’un fournisseur d’identité OpenID dans Keycloak
Dans la section précédente, nous avons présenté l’utilisation de Keycloak avec des utilisateurs créés directement par l’administrateur de Keycloak. Dans cette section, nous allons montrer comment intégrer un fournisseur d’identité OpenID externe. Dans ce cas de figure, les personnes accédant à Onyxia peuvent provenir soit du système d’information existant (via le fournisseur d’identité OpenID externe), soit de comptes locaux créés manuellement par l’administrateur Keycloak.
Concernant le fournisseur d’identité OpenID externe, j’utiliserai celui proposé par l’hébergeur des services que je déploie. Il est bien entendu possible d’utiliser d’autres fournisseurs, tels que ceux proposés par Google ou Meta. Quel que soit le fournisseur d’identité OpenID retenu, trois informations seront nécessaires pour configurer Keycloak :
- L’URL du endpoint : adresse du fournisseur d’identité (OpenID Provider) qui expose les points d’accès nécessaires à l’authentification (https://auth-cas.mydomain.fr/authentification/oidc/.well-known);
- Le client ID : identifiant public de l’application déclarée auprès du fournisseur d’identité (n’est pas secret car disponible sur le client) ;
- Le client secrète : mot de passe associé au Client ID (ne pas divulguer et seul Keycloak le conservera).
- Depuis le menu latéral, cliquer sur Identiy Providers et sélectionner le fournisseur
OpenID Connect v1.0.

- Préciser dans les champs d’édition Alias et Display Name la valeur
oidc. Au niveau du champ d’édition Discovery endpoint, donner l’URL du endpoint. Enfin, remplir les champs d’édition Client ID et Client Secret.

- Au niveau du champ de sélection Sync mode, choisir la valeur
Import. Ainsi, les informations du compte seront importées une seule fois lors de la création de l’utilisateur. Vous pouvez également utiliser le modeForcequi permet de mettre à jour les informations du compte à chaque nouvelle connexion.

- Pour vérifier que tout fonctionne, vous pouvez consulter l’URL suivante : https://auth.lab-onyxia.mydomain.fr/auth/realms/onyxia/.well-known/openid-configuration
La réponse fournit des informations permettant, entre autres, de déterminer quels attributs sont renvoyés par le fournisseur d’identité OpenID :
1
2
3
4
5
6
7
8
9
10
11
12
"claims_supported": [
"aud",
"sub",
"iss",
"auth_time",
"name",
"given_name",
"family_name",
"preferred_username",
"email",
"acr"
]
À cette étape de configuration lors de la phase d’authentification, vous pourrez le faire soit en passant par le fournisseur d’identité OpenID fraichement configuré soit passer par les comptes créés manuellement par l’administrateur Keycloak.

Quand vous choisissez l’authentification par le fournisseur d’identité OpenID, vous aurez un formulaire qui vous demandera de compléter les données.

La raison, c’est que notre fournisseur d’identité OpenID regroupent les informations utilisateur dans un objet attributes car il s’appuie fortement sur LDAP. Keycloak n’arrive donc pas à créer un utilisateur avec les informations minimalistes (userName, email, firstName et lastName).
Nous montrons dans la suite comment faire correspondre (mapper) des attributs du fournisseur (claim) qui sont contenus dans un objet attributes avec des attributs du modèle utilisateur Keycloak.
1
2
3
4
5
6
7
"attributes": {
"uid": ["baronm"],
"displayName": ["Mickaël BARON"],
"givenName": ["Mickaël"],
"sn": ["BARON"],
"email": ["mickael.baron@ensma.fr"]
}
- Éditer la configuration du fournisseur d’identité OpenID et sélectionner l’onglet Mappers.

- Cliquer sur Add mapper, saisir dans le champ d’édition Name la valeur
email, choisir le type de correspondance Mapper Type la valeurAttribute Importer, saisir dans le champ d’édition Claim la valeurattributes.emailet dans le champ de sélection User Attribute Name la valeuremail.

- Procéder de la même façon pour les attributs
firstNameetlastName.

Vérifier que la configuration est opérationnelle en vous authentifiant via le fournisseur d’identité OpenID. A l’issue de cette opération, un nouvel utilisateur sera créer directement dans Keycloak. Les informations userName, email, firstName et lastName proviendront du fournisseur de service OpenID.
Conclusion
Dans ce premier billet, nous avons posé les bases du déploiement d’Onyxia en environnement on-premises sur Kubernetes. Après une installation volontairement simple de la plateforme, nous avons progressivement introduit la gestion des utilisateurs et de l’authentification en nous appuyant sur Keycloak. Cette approche incrémentale permet de mieux comprendre chaque brique, leurs interactions et les points de configuration essentiels.
Nous avons ainsi vu comment :
- déployer Onyxia via Helm et personnaliser son interface ;
- installer et configurer Keycloak comme gestionnaire d’identités ;
- intégrer Onyxia avec Keycloak via OpenID Connect ;
- gérer les audiences et les jetons JWT ;
- fédérer un fournisseur d’identité OpenID externe ;
- et mapper correctement les attributs utilisateur lorsque ceux-ci ne sont pas exposés de manière standard.
Cette première étape permet déjà de disposer d’une plateforme Onyxia pleinement fonctionnelle, sécurisée et intégrée à un système d’authentification.
Dans le prochain billet, nous verrons comment définir des droits spécifiques par utilisateur afin de contrôler finement l’accès aux ressources critiques, en particulier les GPU. Pour cela, nous utiliserons le principe de roles dans Onyxia.
Je suis Mickaël BARON Ingénieur de Recherche en Informatique à l'ISAE-ENSMA et membre du laboratoire LIAS le jour
Veilleur Technologique la nuit
#Java #Container #VueJS #Services #WebSemantic
Derniers articles et billets

Vous pouvez laisser un commentaire en utilisant les Github Issues.