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 OAuth2 les jetons d'accès et d'actualisation de l'interaction IdP s'appelle le flux de code secret. Avec l'attribut flux de code secret, vous utilisez un navigateur pour obtenir un code secret à usage unique que vous utilisez ensuite pour obtenir OAuth2 de jetons.

Cependant, votre environnement de développement peut prendre en charge l'automatisation pour des tâches de développement courantes, comme l'automatisation des tests ou les CI/CD. Pour automatiser ces tâches lorsqu'un IdP externe est activé, vous devez pouvoir obtenir et actualiser les jetons OAuth2 sans avoir à copier/coller un code secret depuis un navigateur.

Edge prend en charge la génération automatisée de jetons via l'utilisation d'utilisateurs de machine au sein des organisations. pour lesquels un IdP est activé. Un utilisateur de machine peut d'obtenir des jetons OAuth2 sans avoir à spécifier de code secret. Vous pouvez donc automatiser 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 machine pour une organisation compatible avec un IdP:

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

Vous ne pouvez pas créer d'utilisateur machine pour les organisations pour lesquelles aucun IdP externe n'est activé.

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

Utiliser le apigee-ssoadminapi.sh pour créer un utilisateur machine au sein d'une organisation compatible avec un IdP. Reportez-vous à la section Utilisation apigee-ssoadminapi.sh pour en savoir plus. Vous pouvez créer un seul utilisateur machine qui sera utilisé par tous vos organisations, ou créer un utilisateur machine distinct pour chaque organisation.

L'utilisateur machine est créé et stocké dans le magasin de données Edge, et non dans votre IdP. Par conséquent, vous ne sont pas responsables de la maintenance de l'utilisateur de la machine à l'aide de l'interface utilisateur et de la gestion Edge API.

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

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

  1. Exécutez la commande apigee-ssoadminapi.sh suivante pour créer l'utilisateur 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

    QUESTION/TBD: Does apigee-ssoadminapi.sh also take "ldap" as an argument?

    Où :

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

      Dans cet exemple, vous pouvez omettre les valeurs pour --port et --ssl, car le module apigee-sso utilise la valeur par défaut les valeurs 9 099 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 et ajoutez l'adresse e-mail de l'utilisateur machine à vos organisations et attribuez l'utilisateur machine au rôle approprié. Voir Ajouter des utilisateurs globaux pour plus encore.

Créer un utilisateur machine avec Edge API de gestion

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

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

  1. Utilisez la commande curl suivante afin d'obtenir un jeton pour l'utilisateur ssoadmin, le nom d'utilisateur du compte administrateur de 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 apigee-sso comme spécifié par la propriété SSO_ADMIN_SECRET dans fichier de configuration.

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

  2. Exécutez la commande curl suivante pour créer l'utilisateur machine, en transmettant le jeton que vous reçues à 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 utilisateur de la machine lors d'étapes ultérieures.

  3. Connectez-vous à l'interface utilisateur Edge.
  4. Ajoutez l'adresse e-mail de l'utilisateur machine à vos organisations et affectez cet utilisateur au groupe rôle nécessaire. Reportez-vous à la section Ajout des utilisateurs dans le monde.

Obtenir et actualiser des jetons utilisateur machine

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

Pour obtenir des jetons OAuth2 pour l'utilisateur 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'

    Conservez 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 l'exemple suivant montre:
    curl -H "Authorization: Bearer access_token" \
      http://MS_IP_DNS:8080/v1/organizations/org_name

    org_name correspond au nom de l'organisation hébergeant l'utilisateur 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'