Utiliser un fournisseur d'identité externe 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 USER_NAME:PASSWORD https://MS_IP_DNS:8080/v1/organizations/ORG_NAME

Dans cet exemple, vous utilisez l'option curl -u pour transmettre les 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, comme le montre 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'authentification de base. Si vous désactivez l'authentification de base, tous les scripts (tels que Maven, shell et apigeetool) qui s'appuient sur les appels d'API de gestion Edge prenant en charge l'authentification de base ne fonctionnent plus. Vous devez mettre à jour tous les appels d'API et scripts qui utilisent l'authentification de base pour transmettre les jetons d'accès OAuth2 dans l'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 vos identifiants 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 vos identifiants utilisateur.

L'utilitaire get_token stocke les jetons sur le disque, prêts à être utilisés lorsque cela est nécessaire. Il imprime également un jeton d'accès valide pour stdout. Vous pouvez alors utiliser une extension de navigateur telle que Postman ou l'intégrer à 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 le numéro de port TLS approprié.

  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 indiqué 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 au format suivant :
    export SSO_LOGIN_URL="http://EDGE_SSO_IP_DNS:9099"

    EDGE_SSO_IP_DNS correspond à l'adresse IP de la machine hébergeant le module d'authentification unique Apigee. Si vous avez configuré TLS sur l'authentification unique Apigee, utilisez https et le numéro de port TLS approprié.

  5. (SAML uniquement) 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 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 obtenir un nouveau code secret ou que vous utilisiez le code secret avec get_token pour générer un jeton d'accès.

    Notez que vous ne pouvez utiliser un code secret que lors de l'authentification auprès d'un fournisseur d'identité (IdP) SAML. Vous ne pouvez pas utiliser de code secret pour vous authentifier auprès d'un IdP LDAP.

  6. Appelez get_token pour obtenir le jeton d'accès OAuth2, comme indiqué dans 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'adresse e-mail, comme indiqué dans l'exemple suivant:

    get_token -u EMAIL_ADDRESS -p PASSCODE

    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.

  7. Transmettez le jeton d'accès à un appel d'API de gestion Edge en tant qu'en-tête Bearer, comme indiqué dans l'exemple suivant :
    curl -H "Authorization: Bearer ACCESS_TOKEN"
      https://MS_IP:8080/v1/organizations/ORG_NAME
  8. Lorsque vous obtenez un jeton d'accès pour la première fois, vous pouvez l'obtenir et le transmettre à un appel d'API dans une seule commande, comme indiqué dans l'exemple suivant :
    header=`get_token` && curl -H "Authorization: Bearer $header"
      https://MS_IP:8080/v1/o/ORG_NAME

    Avec cette forme de commande, si le jeton d'accès a expiré, il est automatiquement actualisé jusqu'à ce que le jeton d'actualisation expire.

(SAML uniquement) 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 les jetons

Utiliser la sécurité OAuth2 avec l'API de gestion Apigee Edge montre comment utiliser l'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és à partir d'assertions SAML.

La seule différence entre les appels d'API documentée dans Utilisation de la sécurité OAuth2 avec l'API de gestion Apigee Edge est que l'URL de l'appel doit référencer le nom de votre zone. En outre, 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 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=USER_EMAIL&password=USER_PASSWORD'

(SAML) 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'

Notez que l'authentification avec un IdP SAML nécessite un code secret temporaire, contrairement à un IdP LDAP.

Actualiser un jeton d'accès

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=REFRESH_TOKEN'