Utiliser OAuth2 pour accéder à l'API Edge

<ph type="x-smartling-placeholder"></ph> Vous consultez la documentation Apigee Edge.
Accédez à la page Documentation sur Apigee X.
En savoir plus

Apigee Edge vous permet d'effectuer des appels d'API Edge authentifiés avec des jetons OAuth2. La prise en charge d'OAuth2 est activée par défaut sur Edge pour les comptes Cloud. Si vous utilisez Edge pour le cloud privé, vous ne pouvez pas utiliser OAuth2 sans Commencez par configurer SAML ou LDAP.

Fonctionnement d'OAuth2 (avec l'API Apigee Edge)

Les appels à l'API Apigee Edge nécessitent une authentification afin que nous sachions que vous êtes vous affirmez l'être. Pour vous authentifier, nous exigeons l'envoi d'un jeton d'accès OAuth2 avec votre requête pour accéder à l'API.

Par exemple, si vous souhaitez obtenir des détails sur une organisation sur Edge, vous devez envoyer une demande à une URL semblable à celle-ci:

https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval

Mais vous ne pouvez pas envoyer cette demande sans nous dire qui vous êtes. Sinon, toute personne puisse voir les informations sur votre organisation.

C'est là qu'OAuth2 entre en jeu: pour vous authentifier, vous devez nous envoyer un jeton d'accès. également dans cette demande. Le jeton d'accès nous indique qui vous êtes afin de nous assurer que vous êtes autorisé à voir les détails de l'organisation.

Heureusement, vous pouvez obtenir un jeton en envoyant vos identifiants au service Edge OAuth2. La répond par des jetons d'accès et d'actualisation.

Flux OAuth2: requête initiale

L'image suivante montre le flux OAuth2 lorsque vous accédez à l'API Edge pour la première temps:

<ph type="x-smartling-placeholder">
</ph> Flux OAuth: première requête
Figure 1:Flux OAuth: première requête

Comme le montre la Figure 1, lorsque vous envoyez votre requête initiale à l'API Edge:

  1. Vous demandez un jeton d'accès. Pour ce faire, utilisez API Edge, acurl ou get_token. Par exemple :
    get_token
    Enter username:
    ahamilton@apigee.com
    Enter the password for user 'ahamilton@apigee.com'
    [hidden input]
    Enter the six-digit code if 'ahamilton@apigee.com' is MFA enabled or press ENTER:
    123456
  2. Le service Edge OAuth2 répond par un jeton d'accès et l'imprime sur stdout. Par exemple:
    Dy42bGciOiJSUzI1NiJ9.eyJqdGkiOiJhM2YwNjA5ZC1lZTIxLTQ1YjAtOGQyMi04MTQ0MTYxNjNhNTMiLCJz
    AJpdGUiLCJhcHByb3ZhbHMubWUiLCJvYXV0aC5hcHByb3ZhbHMiXSwiY2xpZW50X2lkIjoiZWRnZWNsaSIsIm
    NjbGkiLCJhenAiOiJlZGdlY2xpIiwiZ3JhbnRfdHlwZSI6InBhc3N3b3JkIiwidXNlcl9pZCI6IjJkMWU3NDI
    GzQyMC1kYzgxLTQzMDQtOTM4ZS1hOGNmNmVlODZhNzkiLCJzY29wZSI6WyJzY2ltLm1lIiwib3BlbmlkIiwic
    ENC05MzhlLWE4Y2Y2ZWU4NmE3OSIsIm9yaWdpbiI6InVzZXJncmlkIiwidXNlcl9uYW1lIjoiZGFuZ2VyNDI0
    RI6ImUyNTM2NWQyIiwiaWF0IjoxNTI4OTE2NDA5LCJleHAiOjE1Mjg5MTgyMDksImlzcyI6Imh0dHBzOi8vbG
    420iLCJlbWFpbCI6ImRhbmdlcjQyNDJAeWFob28uY29tIiwiYXV0aF90aW1lIjoxNTI4OTE2NDA5LCJhbCI6M
    2lLmNvbSIsInppZCI6InVhYSIsImF1ZCI6WyJlZGdlY2xpIiwic2NpbSIsIm9wZW5pZCIsInBhc3N3b3JkIiw

    Les utilitaires acurl et get_token enregistrent automatiquement l'accès et les jetons d'actualisation dans ~/.sso-cli (le jeton d'actualisation n'est pas écrit dans stdout.) Si vous utilisez le service Edge OAuth2 pour obtenir des jetons, vous devez les enregistrer pour utilisez-vous plus tard.

  3. Vous envoyez une demande à l'API Edge avec le jeton d'accès. acurl de pièces jointes le jeton automatiquement ; Par exemple:
    acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval

    Si vous utilisez un autre client HTTP, veillez à ajouter le jeton d'accès. Exemple :

    curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
      -H "Authorization: Bearer ACCESS_TOKEN"
  4. L'API Edge exécute votre demande et renvoie généralement une réponse avec des données.

Flux OAuth2: requêtes ultérieures

Lors des requêtes ultérieures, vous n'avez pas besoin d'échanger vos identifiants contre un jeton. À la place, Vous pouvez simplement inclure le jeton d'accès dont vous disposez déjà, tant qu'il n'a pas encore expiré:

<ph type="x-smartling-placeholder">
</ph> Flux OAuth: requêtes ultérieures
Figure 2 : Flux OAuth – Requêtes ultérieures

Comme le montre la Figure 2, lorsque vous disposez déjà d'un jeton d'accès:

  1. Vous envoyez une demande à l'API Edge avec le jeton d'accès. acurl de pièces jointes automatiquement le jeton. Si vous utilisez d'autres outils, vous devez ajouter le jeton manuellement.
  2. L'API Edge exécute votre demande et renvoie généralement une réponse avec des données.

Flux OAuth2: expiration de votre jeton d'accès

Lorsqu'un jeton d'accès expire (après 12 heures), vous pouvez l'utiliser pour obtenir un nouveau jeton d'accès:

<ph type="x-smartling-placeholder">
</ph> Flux OAuth: actualiser le jeton d&#39;accès
Figure 3:Flux OAuth: actualisation du jeton d'accès

Comme le montre la Figure 3, lorsque votre jeton d'accès a expiré:

  1. Vous envoyez une demande à l'API Edge, mais votre jeton d'accès a expiré.
  2. L'API Edge rejette votre demande comme non autorisée.
  3. Vous envoyez un jeton d'actualisation au service Edge OAuth2. Si vous utilisez acurl, cette étape est terminée. automatiquement pour vous.
  4. Le service Edge OAuth2 répond avec un nouveau jeton d'accès.
  5. Vous envoyez une demande à l'API Edge avec le nouveau jeton d'accès.
  6. L'API Edge exécute votre demande et renvoie généralement une réponse avec des données.

Obtenir les jetons

Pour obtenir un jeton d'accès que vous pouvez envoyer à l'API Edge, vous pouvez utiliser le code suivant : Utilitaires Apigee, en plus d'un utilitaire tel que curl:

  • get_token tool: échange vos identifiants Apigee pour y accéder et actualiser les jetons que vous pouvez utiliser pour appeler l'API Edge.
  • Utilitaire acurl: fournit un wrapper de commodité pour un objet standard curl. Construit des requêtes HTTP en périphérie obtient des jetons d'accès et d'actualisation auprès de get_token, puis les transmet à l'API Edge.
  • Points de terminaison de jetons dans le service Edge OAuth2: échangez vos Identifiants Apigee pour les jetons d'accès et d'actualisation via un appel à l'API Edge.

Ces utilitaires échangent vos identifiants de compte Apigee (adresse e-mail et mot de passe) pour les jetons dont la durée est la suivante:

  • Les jetons d'accès expirent au bout de 12 heures.
  • Les jetons d'actualisation expirent au bout de 30 jours.

Par conséquent, une fois que vous avez effectué un appel d'API avec acurl ou get_token, vous pouvez continuer à utiliser la paire de jetons pendant 30 jours. Passé ce délai, vous devez saisir à nouveau votre des identifiants et d'obtenir de nouveaux jetons.

Accéder à l'API Edge avec OAuth2

Pour accéder à l'API Edge, vous envoyez une demande à un point de terminaison de l'API et vous incluez le jeton d'accès. Vous pouvez le faire avec n'importe quel client HTTP, y compris un utilitaire de ligne de commande tel que curl, une interface utilisateur basée sur un navigateur, comme Postman, ou un utilitaire Apigee tel que acurl.

L'accès à l'API Edge avec acurl et curl est décrit dans la section dans les sections suivantes.

Utiliser acurl

Pour accéder à l'API Edge avec acurl, votre demande initiale doit inclure votre identifiants de connexion. Le service Edge OAuth2 répond avec les jetons d'accès et d'actualisation. acurl enregistre les jetons localement.

Lors des requêtes suivantes, acurl utilise les jetons enregistrés dans ~/.sso-cli. que vous n’avez pas besoin d’inclure à nouveau vos identifiants jusqu’à ce que les jetons expirent.

L'exemple suivant montre une requête acurl initiale qui obtient les détails du "ahamilton-eval" organisation:

acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
  -u ahamilton@apigee.com
Enter the password for user 'ahamilton@apigee.com'
[hidden input]
Enter the six-digit code (no spaces) if 'ahamilton@apigee.com' is MFA-enabled or press ENTER:
1a2b3c
{
  "createdAt" : 1491854501264,
  "createdBy" : "noreply_iops@apigee.com",
  "displayName" : "ahamilton",
  "environments" : [ "prod", "test" ],
  "lastModifiedAt" : 1491854501264,
  "lastModifiedBy" : "noreply_iops@apigee.com",
  "name" : "ahamilton",
  "properties" : {
    "property" : [ {
      "name" : "features.isSmbOrganization",
      "value" : "false"
    }, {
      "name" : "features.isCpsEnabled",
      "value" : "true"
    } ]
  },
  "type" : "trial"
}

acurl https://api.enterprise.apigee.com/v1/o/ahamilton-eval/apis/helloworld/revisions/1/policies

[ "SOAP-Message-Validation-1", "Spike-Arrest-1", "XML-to-JSON-1" ]

En plus d'obtenir des informations sur l'organisation, cet exemple montre également une seconde requête qui récupère une liste des stratégies dans le fichier "helloworld" proxy d'API. La deuxième demande utilise raccourcir "o" pour "organisations" dans l'URL.

Notez que acurl transmet automatiquement le jeton d'accès lors de la deuxième requête. Toi n'ont pas besoin de transmettre vos identifiants utilisateur une fois que acurl stocke les jetons OAuth2. Il récupère le jeton à partir de ~/.sso-cli pour les appels suivants.

Pour en savoir plus, consultez la section Utiliser acurl pour accéder à l'API Edge.

Utiliser curl

Vous pouvez utiliser curl pour accéder à l'API Edge. Pour ce faire, vous devez d'abord obtenir des jetons d'accès et d'actualisation. Vous pouvez les obtenir à l'aide d'un utilitaire tel que get_token ou Service Edge OAuth2.

Une fois votre jeton d'accès enregistré, transmettez-le dans le En-tête Authorization de vos appels à l'API Edge, comme dans l'exemple suivant affiche:

curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
  -H "Authorization: Bearer ACCESS_TOKEN"

Le jeton d'accès est valide pendant 12 heures après son émission. Une fois le jeton d'accès expiré, le jeton d'actualisation peut être utilisé pendant 30 jours pour émettre un autre jeton d'accès sans requérir d'identifiants. Apigee recommande de demander un nouveau jeton d'accès uniquement après l'expiration du jeton de référent, plutôt que en saisissant des identifiants et en effectuant une nouvelle requête à chaque appel d'API.

Expiration des jetons

Une fois que votre jeton d'accès a expiré, vous pouvez l'utiliser pour obtenir un nouveau jeton de devoir renvoyer vos identifiants.

La manière dont vous actualisez votre jeton d'accès dépend de l'outil que vous utilisez:

  • acurl: aucune action requise. acurl actualise automatiquement le jeton d'accès lorsque vous envoyez une requête qui contient une requête obsolète.
  • get_token: appelez get_token pour actualiser le jeton d'accès.
  • Service Edge OAuth2: envoyez une requête qui inclut les éléments suivants: <ph type="x-smartling-placeholder">
      </ph>
    • Jeton d'actualisation
    • Paramètre de formulaire grant_type défini sur "refresh_token"

OAuth2 pour les utilisateurs machine

Vous pouvez créer un script d'accès automatisé à l'aide des utilitaires acurl et get_token aux API Edge avec l'authentification OAuth2 pour les utilisateurs machine. L'exemple suivant montre comment utiliser get_token pour demandez un jeton d'accès, puis ajoutez la valeur du jeton à un appel curl:

  USER=me@example.com
  PASS=not-that-secret
  TOKEN=$(get_token -u $USER:$PASS -m '')
  curl -H "Authorization: Bearer $TOKEN" 'https://api.enterprise.apigee.com/v1/organizations/...'

Vous pouvez également combiner la requête de jeton et l'appel curl à l'aide de l'utilitaire acurl. Exemple :

  USER=me@example.com
  PASS=not-that-secret
  acurl -u $USER:$PASS -m '' 'https://api.enterprise.apigee.com/v1/organizations/...'
  

Dans les deux exemples, définir la valeur de -m sur une chaîne vide empêchera un utilisateur de machine d’être invité à entrer un code MFA.