Automatiser les tâches pour les IdP externes

Lorsque vous utilisez un IDP externe avec l'API Edge, le processus que vous utilisez pour obtenir des jetons d'accès et d'actualisation OAuth2 à partir de l'interaction IdP est appelé le flux de code secret. Avec le flux de code secret, vous utilisez un navigateur pour obtenir un code secret à usage unique, que vous utilisez ensuite pour obtenir des jetons OAuth2.

Toutefois, votre environnement de développement peut être compatible avec l'automatisation des tâches de développement courantes, telles que l'automatisation des tests ou l'intégration et la diffusion continues (CI/CD). Pour automatiser ces tâches lorsqu'un IdP externe est activé, vous devez pouvoir obtenir et actualiser des jetons OAuth2 sans avoir à copier/coller un code secret à partir d'un navigateur.

Edge est compatible avec la génération automatique de jetons grâce à l'utilisation d'utilisateurs de machines dans les organisations pour lesquelles un IdP est activé. Un utilisateur de machine peut obtenir des jetons OAuth2 sans avoir à spécifier de code secret. Cela signifie que vous pouvez automatiser complètement le processus d'obtention et d'actualisation des jetons OAuth2 à l'aide de l'API de gestion Edge.

Il existe deux façons de créer un utilisateur de machine pour une organisation pour laquelle un IdP est activé :

Chacune de ces méthodes est décrite dans les sections suivantes.

Vous ne pouvez pas créer d'utilisateur de machine pour les organisations qui n'ont pas activé d'IdP externe.

Créer un utilisateur de machine avec apigee-ssoadminapi.sh

Utilisez l'utilitaire apigee-ssoadminapi.sh pour créer un utilisateur de machine dans une organisation pour laquelle un IdP est activé. Pour en savoir plus, consultez la page Utiliser apigee-ssoadminapi.sh. Vous pouvez créer un seul utilisateur de machine utilisé par toutes vos organisations, ou créer un utilisateur de machine distinct pour chaque organisation.

L'utilisateur de machine est créé et stocké dans le datastore Edge, et non dans votre IdP. Par conséquent, vous n'êtes pas responsable de la maintenance de l'utilisateur de machine à l'aide de l'interface utilisateur Edge et de l'API de gestion Edge.

Lorsque vous créez l'utilisateur de machine, vous devez spécifier une adresse e-mail et un mot de passe. Après avoir créé l'utilisateur de machine, vous l'affectez à une ou plusieurs organisations.

Pour créer un utilisateur de machine avec apigee-ssoadminapi.sh :

  1. Utilisez la commande apigee-ssoadminapi.sh suivante pour créer l'utilisateur de machine :
    apigee-ssoadminapi.sh saml machineuser add --admin SSO_ADMIN_NAME \
      --secret SSO_ADMIN_SECRET --host Edge_SSO_IP_or_DNS \
      -u machine_user_email -p machine_user_password

    Où :

    • SSO_ADMIN_NAME est le nom d'utilisateur administrateur défini par la propriété SSO_ADMIN_NAME dans le fichier de configuration utilisé pour configurer le module Apigee SSO. La valeur par défaut est ssoadmin.
    • SSO_ADMIN_SECRET est le mot de passe administrateur spécifié par la SSO_ADMIN_SECRET propriété dans le fichier de configuration.

      Dans cet exemple, vous pouvez omettre les valeurs de --port et --ssl car le apigee-sso module utilise les valeurs par défaut 9099 pour --port et http pour --ssl. Si votre installation n'utilise pas ces valeurs par défaut, spécifiez-les de manière appropriée.

  2. Connectez-vous à l'interface utilisateur Edge, ajoutez l'adresse e-mail de l'utilisateur de machine à vos organisations et attribuez lui le rôle nécessaire. Pour en savoir plus, consultez la section Ajouter des utilisateurs globaux.

Créer un utilisateur de machine avec l'API de gestion Edge

Vous pouvez créer un utilisateur de machine à l'aide de l'API de gestion Edge au lieu d'utiliser l' apigee-ssoadminapi.sh utilitaire.

Pour créer un utilisateur de machine avec l'API de gestion :

  1. Utilisez la commande curl suivante pour obtenir un jeton pour l'utilisateur ssoadmin, le nom d'utilisateur du compte administrateur pour apigee-sso :
    curl "http://Edge_SSO_IP_DNS:9099/oauth/token" -i -X POST \
      -H 'Accept: application/json' / -H 'Content-Type: application/x-www-form-urlencoded' \
      -d "response_type=token" -d "grant_type=client_credentials" \
      --data-urlencode "client_secret=SSO_ADMIN_SECRET" \
      --data-urlencode "client_id=ssoadmin"

    SSO_ADMIN_SECRET est le mot de passe administrateur que vous avez défini lors de l'installation de apigee-sso comme spécifié par la propriété SSO_ADMIN_SECRET dans le fichier de configuration.

    Cette commande affiche un jeton dont vous avez besoin pour effectuer l'appel suivant.

  2. Utilisez la commande curl suivante pour créer l'utilisateur de machine, en transmettant le jeton que vous avez reçu à l'étape précédente :
    curl "http://edge_sso_IP_DNS:9099/Users" -i -X POST \
      -H "Accept: application/json" -H "Content-Type: application/json" \
      -d '{"userName" : "machine_user_email", "name" :
        {"formatted":"DevOps", "familyName" : "last_name", "givenName" :
        "first_name"}, "emails" : [ {"value" :
        "machine_user_email", "primary" : true } ], "active" : true,
        "verified" : true, "password" : "machine_user_password" }' \
      -H "Authorization: Bearer token"

    Vous aurez besoin du mot de passe de l'utilisateur de machine lors des étapes ultérieures.

  3. Connectez-vous à l'interface utilisateur Edge.
  4. Ajoutez l'adresse e-mail de l'utilisateur de machine à vos organisations et attribuez-lui le rôle nécessaire. Pour en savoir plus, consultez la section Adding global users.

Obtenir et actualiser les jetons d'utilisateur de machine

Utilisez l'API Edge pour obtenir et actualiser les jetons OAuth2 en transmettant les identifiants de l'utilisateur de machine au lieu d'un code secret.

Pour obtenir des jetons OAuth2 pour l'utilisateur de machine :

  1. Utilisez l'appel d'API suivant pour générer les jetons d'accès et d'actualisation initiaux :
    curl -H "Content-Type: application/x-www-form-urlencoded;charset=utf-8" \
      -H "accept: application/json;charset=utf-8" \
      -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST \
      http://Edge_SSO_IP_DNS:9099/oauth/token -s \
      -d 'grant_type=password&username=m_user_email&password=m_user_password'

    Enregistrez les jetons pour une utilisation ultérieure.

  2. Transmettez le jeton d'accès à un appel d'API de gestion Edge en tant qu'en-tête Bearer, comme le montre l'exemple suivant :
    curl -H "Authorization: Bearer access_token" \
      http://MS_IP_DNS:8080/v1/organizations/org_name

    org_name est le nom de l'organisation contenant l'utilisateur de machine.

  3. Pour actualiser ultérieurement le jeton d'accès, utilisez l'appel suivant qui inclut le jeton d'actualisation :
    curl -H "Content-Type:application/x-www-form-urlencoded;charset=utf-8" \
      -H "Accept: application/json;charset=utf-8" \
      -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST \
      http://edge_sso_IP_DNS:9099/oauth/token \
      -d 'grant_type=refresh_token&refresh_token=refreshToken'