For AI agents: the complete documentation index is available at https://docs.ovhcloud.com/fr/llms.txt, the full documentation bundle is available at https://docs.ovhcloud.com/fr/llms-full.txt, and this page is available as Markdown at https://docs.ovhcloud.com/fr/guides/hosted-private-cloud/opcp/how-to-use-api-and-get-credentials.md.

Comment utiliser les API et obtenir les informations d'identification

Voir en Markdown

Découvrez les étapes nécessaires pour configurer Keycloak et le CLI OpenStack afin de permettre l’authentification via Keycloak

Objectif

OPCP intègre une authentification centralisée avec Keycloak. Il est donc nécessaire de configurer la CLI OpenStack afin qu’il utilise Keycloak comme fournisseur d’identité (Identity Provider).

Ce guide décrit les étapes nécessaires pour configurer Keycloak et la CLI OpenStack afin de permettre l’authentification via Keycloak.

Prérequis

  • Être administrateur de l'infrastructure OPCP et avoir accès à l'interface d'administration (admin.dashboard).
  • Avoir accès à l'interface d'administration Keyloack admin.
  • Avoir un utilisateur avec les droits suffisants pour se connecter à Horizon sur l'offre OPCP.

En pratique

Création d’un client Keycloak pour la CLI OpenStack

Un client Keycloak dédié est nécessaire pour permettre à la CLI OpenStack de communiquer de manière sécurisée avec le serveur Keycloak.

Étapes

1. Connexion à l’interface d’administration Keycloak

  • Connectez-vous à votre instance Keycloak et sélectionnez le realm dans lequel les utilisateurs OpenStack sont définis.

2. Création d’un nouveau client

  • Allez dans la section Clients et cliquez sur Créer un client.

  • Renseignez un ID du client, par exemple :

    openstack-cli
  • Cliquez sur Suivant.

3. Activation de l’authentification du client

  • Activez l'Authentification du client (mettre sur Activé).
  • Cochez la case Validations des accès directs.
  • Cliquez sur Suivant, puis sur Sauvegarder.

4. Configuration des portées (Périmètres client)

  • Ouvrez l’onglet Périmètres client.
  • Sélectionnez la portée nommée :
[votre-client-id]-dedicated
  • Cliquez sur Configurer un nouveau mappeur.

5. Ajout d’un mapper d’attributs de groupe utilisateur

  • Choisissez le type de mapper aggregated-user-group-attribute-mapper.

  • Configurez les champs suivants :

    ChampValeur
    Nomprojects
    Attribut utilisateurproject
    Nom de l'attribut du jetonprojects
  • Cliquez sur Sauvegarder.

6. Ajout d’un mapper d’audience (à partir de la version 3.0.5 d’OPCP)

Info

Depuis la version 3.0.5 d’OPCP, vous devez ajouter un mapper d’audience au client afin que les tokens émis incluent l’audience keystone-default. Sans ce mapper, l’authentification auprès de Keystone échoue.

  • Depuis l’onglet Périmètres client, sélectionnez de nouveau la portée [votre-client-id]-dedicated.

  • Cliquez sur Configurer un nouveau mappeur et choisissez le type Audience.

  • Configurez les champs suivants :

    ChampValeur
    Nomkeystone-audience
    Audience client inclusekeystone-default
    Audience personnalisée incluse(laisser vide)
  • Cliquez sur Sauvegarder.

7. Récupération des identifiants du client

  • Allez dans l’onglet Identifiants du client que vous venez de créer.
  • Copiez et conservez de manière sécurisée le Secret du client — il sera nécessaire lors de la configuration du CLI OpenStack.

Configuration de la CLI OpenStack

Une fois le client Keycloak créé, la CLI OpenStack doit être configurée pour utiliser ce client comme fournisseur d'identité OIDC (OpenID Connect).

Étapes

1. Installer les outils CLI OpenStack

Si ce n’est pas déjà fait :

sudo pip install python-openstackclient

2. Définir les variables d’environnement pour l’authentification Keycloak

Exemple :

export OS_INTERFACE=public
export OS_IDENTITY_API_VERSION=3
export OS_AUTH_URL="https://keystone.domain.ovh"
export OS_AUTH_TYPE="v3oidcpassword"
export OS_PROTOCOL="openid"
export OS_IDENTITY_PROVIDER="keycloak-admin"
export OS_CLIENT_ID="keycloak-client-id"
export OS_CLIENT_SECRET="keycloak-client-credentials"
export OS_DISCOVERY_ENDPOINT="https://admin.keycloak.domain.ovh/realms/master/.well-known/openid-configuration"
export OS_USERNAME="keycloak-user-username"
export OS_PASSWORD="keycloak-user-password"
export OS_PROJECT_ID="project-id"
Tip

Vous pouvez utiliser le script suivant afin de générer le fichier de configuration openrc.sh facilement :

 #!/usr/bin/env bash

read -p "Your environment's base FQDN (e.g. example.bmp.ovhgoldorack.ovh): " FQDN_ENV

read -p 'master or pod realm ? (master/pod): ' REALM
if [ "$REALM" != "master" ] && [ "$REALM" != "pod" ]; then
    echo "Invalid input. Please enter either 'master' or 'pod'."
    exit 1
fi

read -p 'Keycloak client ID: ' KC_CLIENT_ID
read -srp 'Keycloak client secret: ' KC_CLIENT_SECRET && echo

read -p 'Keycloak username: ' KC_USERNAME_INPUT
read -srp 'Keycloak password: ' KC_PASSWORD_INPUT && echo

read -p 'Openstack Project ID (not the name): ' PROJECT_ID

printf "\n\nHere is your configuration, paste it to your shell or use the generate openrc.sh file\n\n"
cat << EOM
export OS_INTERFACE=public
export OS_IDENTITY_API_VERSION=3
export OS_AUTH_URL="https://keystone.${FQDN_ENV}"
export OS_AUTH_TYPE="v3oidcpassword"
export OS_PROTOCOL="openid"
export OS_IDENTITY_PROVIDER=$([ "$REALM" = "master" ] && echo "keycloak-admin" || echo "keycloak")
export OS_CLIENT_ID="$KC_CLIENT_ID"
export OS_CLIENT_SECRET="$KC_CLIENT_SECRET"
export OS_DISCOVERY_ENDPOINT="https://$([ "$REALM" = "master" ] && echo "admin.keycloak" || echo "keycloak").${FQDN_ENV}`/realms`/$REALM/.well-known/openid-configuration"
export OS_USERNAME="$KC_USERNAME_INPUT"
export OS_PASSWORD="$KC_PASSWORD_INPUT"
export OS_PROJECT_ID="$PROJECT_ID"
EOM

echo "#!/usr/bin/env bash

export OS_INTERFACE=public
export OS_IDENTITY_API_VERSION=3
export OS_AUTH_URL="https://keystone.${FQDN_ENV}"
export OS_AUTH_TYPE="v3oidcpassword"
export OS_PROTOCOL="openid"
export OS_IDENTITY_PROVIDER=$([ "$REALM" = "master" ] && echo "keycloak-admin" || echo "keycloak")
export OS_CLIENT_ID="$KC_CLIENT_ID"
export OS_CLIENT_SECRET="$KC_CLIENT_SECRET"
export OS_DISCOVERY_ENDPOINT="https://$([ "$REALM" = "master" ] && echo "admin.keycloak" || echo "keycloak").${FQDN_ENV}`/realms`/$REALM/.well-known/openid-configuration"
export OS_USERNAME="$KC_USERNAME_INPUT"
export OS_PASSWORD="$KC_PASSWORD_INPUT"
export OS_PROJECT_ID="$PROJECT_ID > $PROJECT_ID."-openrc.sh"
Tip

Configuration d’un proxy :

Si vous utilisez un proxy pour accéder à votre service, vous devez configurer vos variables d’environnement pour prendre en compte ce proxy.

Pour ce faire, ajoutez les lignes de commande suivantes :

export https_proxy=http://your-adress-ip:port/
export http_proxy=http://your-adress-ip:port/

Vérification de la configuration

Vous pouvez tester votre configuration à l’aide de quelques commandes simples :

openstack token issue
openstack project list
openstack server list

Si ces commandes retournent des résultats, l’intégration Keycloak ↔ OpenStack est correctement configurée.

Dépannage (Troubleshooting)

ProblèmeCause possibleSolution
Invalid client credentialsMauvais ou manquant Secret du clientVérifiez le secret dans l’onglet Identifiants du client Keycloak
UnauthorizedL’utilisateur n’est pas associé au bon groupe ou projetVérifiez les attributs project de l’utilisateur dans Keycloak
OIDC discovery failedMauvaise URL dans DISCOVERY_ENDPOINTAssurez-vous qu’elle pointe bien vers le realm correct de Keycloak

Références

Aller plus loin

Pour une formation ou une assistance technique sur la mise en œuvre de nos solutions, contactez votre commercial ou consultez la page Professional Services pour obtenir un devis et faire analyser votre projet par nos experts.

Échangez avec notre communauté d’utilisateurs.

Cette page vous a-t-elle aidé ?