Utiliser un fournisseur d'identité externe avec l'API de gestion Edge

L'authentification de base est l'un des moyens d'authentification lorsque vous effectuez 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 des informations sur votre organisation:

curl -u USER_NAME:PASSWORD https://MS_IP_DNS:8080/v1/organizations/ORG_NAME

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

curl -H "Authorization: Bearer ACCESS_TOKEN" https://MS_IP_DNS:8080/v1/organizations/ORG_NAME

Après avoir activé un IdP externe pour l'authentification, vous pouvez éventuellement désactiver l'option "Basic" l'authentification unique. Si vous désactivez l'édition Basic l'authentification, tous les scripts (tels que Maven, shell et apigeetool) qui des appels d'API de gestion Edge compatibles avec l'authentification de base ne fonctionnent plus. Vous devez mettre à jour les appels d'API et les scripts qui utilisent l'authentification de base pour transmettre les jetons d'accès OAuth2 En-tête Bearer.

Obtenir et actualiser des jetons avec get_token

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

L'utilitaire get_token stocke les jetons sur un disque, prêts à être utilisés si nécessaire. Il imprime également un jeton d'accès valide sur stdout. Vous pouvez alors utiliser une extension de navigateur telle que Postman ou intégrez-le dans une variable d'environnement à utiliser dans curl.

Pour obtenir un jeton d'accès OAuth2 afin d'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 correspond à l'adresse IP ou au nom DNS de la machine hébergeant le module SSO Apigee. Si vous avez configuré TLS sur l'authentification unique Apigee, utilisez https et la bonne Numéro de port TLS.

  2. Décompressez le bundle ssocli-bundle.zip, comme indiqué dans l'exemple suivant:
    unzip ssocli-bundle.zip
  3. Installez get_token dans /usr/local/bin, comme illustré dans l'exemple suivant:
    ./install -b PATH

    L'option -b spécifie un autre emplacement.

  4. Définissez la variable d'environnement SSO_LOGIN_URL sur votre URL de connexion, comme suit : formulaire:
    export SSO_LOGIN_URL="http://EDGE_SSO_IP_DNS:9099"

    EDGE_SSO_IP_DNS est l'adresse IP de la machine qui héberge le module SSO Apigee. Si vous avez configuré TLS sur l'authentification unique Apigee, utilisez https et le port TLS approprié numéro.

  5. (SAML uniquement) Dans un navigateur, accédez à l'URL suivante pour obtenir un identifiant unique code secret:
    http://EDGE_SSO_IP_DNS:9099/passcode

    Si vous avez configuré TLS sur l'authentification unique Apigee, utilisez https et le numéro de port TLS approprié.

    Cette requête renvoie un code secret à usage unique qui reste valide jusqu'à ce que vous actualisiez cette URL pour obtenez-en un nouveau ou utilisez-le avec get_token pour générer un un jeton d'accès.

    Notez que vous ne pouvez utiliser un code secret que lors de l'authentification avec un IdP SAML. Vous ne pouvez pas utiliser un code secret pour s’authentifier auprès d’un IdP LDAP.

  6. Appelez get_token pour obtenir le jeton d'accès OAuth2, comme le montre l'exemple suivant:
    get_token -u EMAIL_ADDRESS

    EMAIL_ADDRESS est l'adresse e-mail d'un utilisateur Edge.

    (SAML uniquement) Saisissez le code secret sur la ligne de commande en plus de l'e-mail , comme le montre l'exemple suivant:

    get_token -u EMAIL_ADDRESS -p PASSCODE

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

  7. 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"
      https://MS_IP:8080/v1/organizations/ORG_NAME
  8. Après avoir obtenu un nouveau jeton d'accès pour la première fois, vous pouvez obtenir le jeton d'accès et transmettez-le à un appel d'API en une seule commande, comme le montre l'exemple suivant:
    header=`get_token` && curl -H "Authorization: Bearer $header"
      https://MS_IP:8080/v1/o/ORG_NAME

    Dans cette forme de commande, si le jeton d'accès a expiré, il est automatiquement sont actualisés jusqu'à l'expiration du jeton d'actualisation.

(SAML uniquement) Une fois le jeton d'actualisation arrivé à expiration, 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 OAuth2 à l'aide de l'API de gestion Apigee Edge montre comment utiliser API de gestion Edge pour obtenir et actualiser des jetons Vous pouvez également utiliser les appels d'API Edge pour obtenir des jetons générées à partir d'assertions SAML.

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

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.

Obtenir un jeton d'accès

(LDAP) Utilisez l'appel d'API suivant pour générer l'accès initial et l'actualisation jetons:

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=USER_EMAIL&password=USER_PASSWORD'

(SAML) Utilisez l'appel d'API suivant pour générer l'accès initial et actualiser jetons:

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'

Notez que l'authentification avec un IdP SAML nécessite un code secret temporaire, alors qu'un IdP LDAP ne fonctionne pas.

Actualiser un jeton d'accès

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