Utiliser SAML avec des tâches automatisées

Edge pour Private Cloud v. 4.17.09

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, que vous utilisez ensuite pour obtenir des jetons OAuth2.

Toutefois, votre environnement de développement peut prendre en charge l'automatisation des tâches de développement courantes, telles que l'automatisation des tests ou l'intégration et le déploiement continus (CI/CD). Pour automatiser ces tâches lorsque SAML est activé, vous devez pouvoir obtenir et actualiser des jetons OAuth2 sans avoir à copier/coller un code secret depuis un navigateur.

Edge accepte la génération automatique de jetons via l'utilisation d'utilisateurs système. Un utilisateur 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 Management Edge.

Créer un utilisateur machine

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

L'utilisateur de la 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 à l'aide de l'interface utilisateur Edge et de l'API Management Edge.

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

Pour créer un utilisateur machine :

  1. Utilisez la commande apigee-ssoadminapi.sh suivante pour créer l'utilisateur de l'ordinateur :
    > 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 d'authentification unique Edge. La valeur par défaut est ssoadmin.
    • SSO_ADMIN_SECRET est le mot de passe administrateur spécifié par la propriété SSO_ADMIN_SECRET dans le 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 de 9099 pour --port et http pour --ssl. Si votre installation n'utilise pas ces valeurs par défaut, spécifiez-les comme il convient.
  2. Connectez-vous à l'interface utilisateur Edge, ajoutez l'adresse e-mail de l'utilisateur machine à vos organisations, puis attribuez-lui le rôle nécessaire. Pour en savoir plus, consultez Ajouter des utilisateurs globaux.

Obtenir et actualiser un jeton d'utilisateur machine

Utilisez l'API Edge pour obtenir et actualiser des jetons OAuth2 en transmettant les identifiants de l'utilisateur de l'ordinateur, 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
    '

    Pour l'autorisation, transmettez un identifiant client OAuth2 réservé dans l'en-tête Authorization. L'appel affiche les jetons d'accès et d'actualisation à l'écran. Enregistrez les jetons pour une utilisation ultérieure.
  2. Transmettez le jeton d'accès à un appel d'API Management Edge en tant qu'en-tête Bearer :
    > curl -H "Authorization: Bearer access_token" http://ms_IP_DNS:8080/v1/organizations/orgName

    où orgName est le nom de l'organisation contenant l'utilisateur de l'ordinateur.
  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'


    Pour l'autorisation, transmettez un identifiant client OAuth2 réservé dans l'en-tête Authorization.

Créer un utilisateur de machine à l'aide de l'API Management Edge

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

  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"


    où SSO_ADMIN_SECRET est le mot de passe administrateur que vous avez défini lors de l'installation d'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 machine, en transmettant le jeton de support 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 machine lors des étapes suivantes.
  3. Connectez-vous à l'interface utilisateur Edge, ajoutez l'adresse e-mail de l'utilisateur machine à vos organisations, puis attribuez-lui le rôle nécessaire. Pour en savoir plus, consultez Ajouter des utilisateurs globaux.