Utiliser SAML avec des tâches automatisées

Edge for Private Cloud v4.19.01

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

Cependant, votre environnement de développement peut accepter l'automatisation pour des tâches de développement courantes, telles que l'automatisation des tests ou l'intégration continue/le déploiement continu (CI/CD). Pour automatiser ces tâches lorsque SAML est activé, vous avez besoin d'un moyen d'obtenir et d'actualiser les jetons OAuth2 sans avoir à copier-coller un code secret depuis un navigateur.

Edge permet la génération automatisée de jetons via l'utilisation d'utilisateurs machine au sein d'organisations SAML. Un utilisateur de machine peut obtenir des jetons OAuth2 sans avoir à spécifier de code secret. Cela signifie que vous pouvez automatiser entièrement 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 SAML:

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

Vous ne pouvez pas créer d'utilisateur machine pour une organisation autre que SAML.

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

Utilisez l'utilitaire apigee-ssoadminapi.sh pour créer un utilisateur machine au sein d'une organisation SAML. Pour en savoir plus, consultez la section Utiliser apigee-ssoadminapi.sh. Vous pouvez créer un seul utilisateur machine pour toutes vos organisations ou un utilisateur distinct pour chaque organisation.

L'utilisateur machine est créé et stocké dans le datastore Edge, et non dans votre fournisseur d'identité SAML. Par conséquent, vous n'êtes pas responsable de la maintenance de l'utilisateur de la machine en utilisant Edge Ui et l'API de gestion Edge.

Lorsque vous créez l'utilisateur machine, vous devez spécifier une adresse e-mail et un mot de passe. Après avoir créé l'utilisateur de la 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 de la 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 de l'administrateur défini par la propriété SSO_ADMIN_NAME dans le fichier de configuration utilisé pour configurer le module SSO Edge. La valeur par défaut est ssoadmin.
    • SSO_ADMIN_SECRET est le mot de passe administrateur tel que spécifié par la propriété SSO_ADMIN_SECRET du fichier de configuration.
    • Dans cet exemple, vous pouvez omettre les valeurs de --port et --ssl, car le module apigee-sso utilise les valeurs par défaut 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, ajoutez l'adresse e-mail de l'utilisateur de la machine à vos organisations et attribuez-lui le rôle nécessaire. Pour en savoir plus, consultez la section Ajouter des utilisateurs mondiaux.

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

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

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

  1. Exécutez la commande curl suivante afin d'obtenir un jeton pour l'utilisateur ssoadmin, à savoir 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 correspond au 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 du 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 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 en aurez besoin dans les prochaines étapes.

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

Obtenir et actualiser les jetons utilisateur machine

Utilisez l'API Edge pour obtenir et actualiser des jetons OAuth2 en transmettant les identifiants de l'utilisateur de la machine, plutôt qu'un code secret.

Pour obtenir des jetons OAuth2 pour l'utilisateur de la 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 de support:
    curl -H "Authorization: Bearer access_token" \
      http://MS_IP_DNS:8080/v1/organizations/org_name

    org_name est le nom de l'organisation à laquelle appartient l'utilisateur de la machine.

  3. Pour actualiser le jeton d'accès ultérieurement, 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'