ProxmoxVE - Configuration SSO Oauth avec keycloak
![]() |
Difficulté : Confirmé Notions : Authentification, Gestion de droits, SSO |
I. Introduction
Cette procédure à pour but d'expliquer la mise en place de l'authentification et de la gestion de droits sur les environnements Proxmox à travers le SSO fourni par Keycloack.
II. Côté Keycloak
2.1 Créer le client
Se connecter au keycloak et sélectionner le realm sur lequel ajouter le client proxmox.
Cliquer sur 'Create client'
Sélectionner le type 'OpenID Connect'
Générer ou définir un 'clientID'.
Il est possible d'utiliser un générateur afin de générer un e chaîne de 32 caractères. Par exemple : ici.
Best Practice : 32 caractères avec minuscules, majuscules et chiffres.
Choisir un nom parlant.
Puis faire 'Next'.
Sur la page suivante, activer 'Client authentication' et 'Authorization'.
Vérifier que les cases suivantes sont cochées.
Puis faire 'Next'.
Entrer les URL au format suivant (en modifiant les FQND).
Puis faire 'Save'.
2.2 Préparer la synchro des groupes
Afin de pouvoir gérer les droits depuis le keycloak et synchroniser les groupes, aller dans l'onglet 'Client scope'.
Choisir le client scope au nom du client suivi de '-dedicated'.
Faire 'Add Mapper' puis 'By Configuration'.
Choisir 'Group Membership'.
Définir le nom du mapper en 'groups'.
Définir le Token claim name en 'groups'.
Vérifier que les fonctions suivantes soit activées / désactivées.
Puis faire 'Save'.
2.3 Récupérer les URL
Pour récupérer les URL, sélectionner le realm et faire 'Realm settings' puis cliquer sur 'OpenID Endpoint Configuration'.
Une page s'affiche et permet de récupérer les URL.
III. Côté Proxmox
3.1 Créer le Realm
Sur 'Datacenter' dans le sous-menu, sélectionner 'Permissions --> Realms' puis faire 'Add'
Sélectionner 'OpenID Connect server'.
Remplir les éléments suivants :
- Issuer URL : l'url Issuer du realm
- Nom du realm : Nom du realm
- Client ID : ID du client sur keycloak
- Client Key : Secret du client
- Cocher 'Default'
- Cocher 'Autocreate Users'
- Username Claim : email (attribut qui servira à authentifier le user)
- Décocher 'Autocreate Groups' (les groupes seront créés à part)
- Group Claim : groups (attribut contenant les groupes de l'utilisateur)
- Décocher Overwrite Groups
- Mettre en commentaire la description du realm
3.2 Créer les groupes
Aller dans 'Permissions --> Groups'.
Créer les groupes tels que définis dans le realm et ajouter le suffixe '-<nomdurealm>'
Astuce : Il est aussi possible de cocher la case de création automatique, placer un utilisateur dans tous les groupes nécessaires, se connecter, puis aller décocher la case de synchronisation des groupes et supprimer les groupes créés en trop.
Il ne restera plus qu'a définir les permissions pour chaque groupe dans 'Permissions'.















