Utiliser SAML avec l'API de gestion Edge

L'authentification de base est un moyen de s'authentifier lors des appels à l'API de gestion Edge. Par exemple, vous pouvez envoyer la requête cURL suivante à l'API de gestion Edge pour accéder aux informations sur votre organisation:

curl -u userName:pWord https://ms_IP_DNS:8080/v1/organizations/orgName

Dans cet exemple, vous utilisez l'option cURL -u pour transmettre des identifiants d'authentification de base. Vous pouvez également transmettre un jeton OAuth2 dans l'en-tête Bearer pour effectuer des appels d'API de gestion Edge. Exemple :

curl -H "Authorization: Bearer access_token" https://ms_IP_DNS:8080/v1/organizations/orgName

Après avoir activé SAML, vous pouvez éventuellement désactiver l'authentification de base. Si vous la désactivez, tous les scripts (scripts Maven, scripts shell, apigeetool, etc.) qui s'appuient sur les appels d'API de gestion Edge prenant en charge cette fonctionnalité ne fonctionneront plus. Vous devez mettre à jour tous les appels d'API et scripts qui utilisent l'authentification de base pour transmettre des jetons d'accès OAuth2 dans l'en-tête de support.

Utiliser get_token pour obtenir et actualiser des jetons

L'utilitaire get_token échange vos identifiants d'authentification de base et un code secret contre un jeton d'accès et d'actualisation OAuth2. L'utilitaire get_token accepte vos identifiants et imprime un jeton d'accès valide. Si un jeton peut être actualisé, il l'actualise et l'imprime. Si le jeton d'actualisation expire, vous serez invité à saisir vos identifiants utilisateur.

L'utilitaire get_token stocke les jetons sur le disque et les prêts à l'emploi si nécessaire. Il imprime également un jeton d'accès valide sur stdout. Vous pouvez alors utiliser Postman ou l'intégrer à une variable d'environnement pour l'utiliser dans curl.

La procédure suivante explique comment utiliser get_token pour obtenir un jeton d'accès OAuth2 pour effectuer des appels d'API de gestion Edge:

  1. Téléchargez le bundle sso-cli:
    curl http://edge_sso_IP_DNS:9099/resources/scripts/sso-cli/ssocli-bundle.zip -o "ssocli-bundle.zip"

    edge_sso_IP_DNS est l'adresse IP du nom DNS de la machine hébergeant le module SSO Edge. Si vous avez configuré TLS sur l'authentification unique Edge, utilisez https et le numéro de port TLS approprié.

  2. Décompressez le bundle ssocli-bundle.zip :
    unzip ssocli-bundle.zip
  3. Installez get_token dans /usr/local/bin:
    > ./install Utilisez l'option -b pour spécifier un autre emplacement: > ./install -b path
  4. Définissez la variable d'environnement SSO_LOGIN_URL sur votre URL de connexion au format suivant:
    export SSO_ADRESSE_URL="http://edge_sso_IP_DNS:9099"

    edge_sso_IP_DNS correspond à l'adresse IP du nom DNS de la machine hébergeant le module d'authentification unique Edge. Si vous avez configuré TLS sur l'authentification unique Edge, utilisez https et le numéro de port TLS approprié.
  5. Dans un navigateur, accédez à l'URL suivante pour obtenir un code secret à usage unique:
    http://edge_sso_IP_DNS:9099/passcode

    Si vous avez configuré TLS sur Edge SSO, utilisez https et le bon numéro de port TLS.

    Remarque: Si vous n'êtes pas actuellement connecté via votre fournisseur d'identité, vous serez invité à vous connecter.

    Cette URL renvoie un code secret à usage unique qui reste valide jusqu'à ce que vous l'actualisez pour obtenir un nouveau code secret ou que vous utilisiez le code secret avec get_token pour générer un jeton d'accès.
  6. Appelez get_token pour obtenir le jeton d'accès OAuth2:
    > get_token -u emailAddress

    emailAddress correspond à l'adresse e-mail d'un utilisateur Edge. Vous êtes invité à saisir le code secret à usage unique obtenu à l'étape 3:
    Code à usage unique ( pour obtenir un code à l'adresse https://edge_sso_IP.com/passcode)
    Saisissez le code secret si SAML est activé, ou appuyez sur ENTRÉE:


    Saisissez-le. L'utilitaire get_token obtient le jeton d'accès OAuth2, l'affiche à l'écran et l'écrit ainsi que le jeton d'actualisation dans ~/.sso-cli.

    Vous pouvez saisir le code secret sur la ligne de commande à l'aide d'une commande get_token au format suivant:
    > get_token -u emailAddress -p mot de passe
  7. Transmettez le jeton d'accès à un appel d'API de gestion Edge en tant qu'en-tête Bearer :
    > curl -H "Authorization: Bearer access_token" https://ms_IP:8080/v1/organizations/orgName

    Après avoir obtenu un nouveau jeton d'accès pour la première fois, vous pouvez obtenir


Une fois le jeton d'actualisation expiré, get_token vous invite à saisir un nouveau code secret. Vous devez accéder à l'URL indiquée à l'étape 3 ci-dessus et générer un nouveau code secret avant de pouvoir générer un nouveau jeton d'accès OAuth.

Utiliser l'API de gestion pour obtenir et actualiser des jetons

Utiliser la sécurité OAuth2 avec l'API de gestion Apigee Edge contient des instructions qui montrent comment utiliser l'API de gestion Edge pour obtenir et actualiser des jetons. Vous pouvez également utiliser des appels d'API Edge pour obtenir les jetons générés à partir d'assertions SAML.

La seule différence entre les appels d'API documentés dans Utilisation de la sécurité OAuth2 avec l'API de gestion Apigee Edge est que l'URL de l'appel doit faire référence à votre nom de zone. En outre, pour générer le jeton d'accès initial, vous devez inclure le code secret, comme indiqué à l'étape 3 de la procédure ci-dessus.

Par exemple, 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 /
https://edge_sso_IP_DNS:9099/oauth/token -s /
-d 'grant_type=password&response_type=token&passcode=passcode'  

Pour l'autorisation, transmettez des identifiants client OAuth2 réservés dans l'en-tête Authorization. L'appel imprime les jetons d'accès et d'actualisation à l'écran.

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 /
https://edge_sso_IP_DNS:9099/oauth/token /
-d 'grant_type=refresh_token&refresh_token=refreshToken'