Accéder à l'API Edge avec SAML

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

SAML prend en charge un environnement d'authentification unique (SSO). En utilisant SAML avec Edge, vous pouvez prendre en charge pour l'interface utilisateur et l'API Edge en plus des autres services que vous fournissez et qui prennent également en charge SAML.

Condition préalable:Vous devez activer SAML pendant au moins une organisation avant de pouvoir l'utiliser pour accéder à l'API Edge.

Différences entre SAML et OAuth2

Une fois SAML configuré, son utilisation ressemble beaucoup à OAuth2 pour accéder l'API Edge. Lorsque vous appelez l'API Edge, vous incluez un jeton d'accès OAuth2 dans votre demande.

La principale différence entre SAML et OAuth2 lors de l'accès à l'API Edge est vous obtenez des jetons. Avec SAML, vous devez inclure les éléments suivants lorsque vous obtenez votre de jetons:

  1. Zones: les utilisateurs Edge for Public Cloud doivent référencer leur nom de zone lors de l'obtention de jetons.
  2. Code secret:incluez un code secret à usage unique lorsque vous demandez un accès ou une actualisation. de jetons.

SAML utilise les mêmes points de terminaison sur le service Edge OAuth2, avec en plus le nom de zone approprié.

Pour obtenir des jetons d'accès avec SAML, vous pouvez utiliser l'une des méthodes suivantes, décrites dans cette section:

En outre, vous pouvez automatiser le processus de génération de jetons pour les utilisateurs machine, comme décrit dans Automatiser le processus de génération de jetons.

Obtenir des jetons d'accès avec get_token

Vous pouvez utiliser l'utilitaire get_token pour échanger vos identifiants avec OAuth2. les jetons d'actualisation que vous utilisez avec SAML.

Pour obtenir un jeton d'accès avec get_token:

  1. Définissez la variable d'environnement SSO_LOGIN_URL sur votre URL de connexion. L'URL de connexion contient au format suivant:
    https://zoneName.login.apigee.com

    Par exemple, pour une zone nommée "acme", définissez SSO_LOGIN_URL sur "https://acme.login.apigee.com", comme le montre l'exemple suivant:

    export SSO_LOGIN_URL=https://acme.login.apigee.com
  2. Appelez get_token pour obtenir le jeton d'accès OAuth2:
    get_token -u me@example.com

    Vous êtes invité à accéder à l'URL affichée pour obtenir un code secret à usage unique:

    Get passcode from https://acme.login.apigee.com/passcode
    [Note:  Passcode can be used only time time and expires] Input passcode (no spaces) and then press ENTER:

    Si vous ne vous êtes pas connecté récemment via votre fournisseur d'identité, vous serez invité à vous connecter po.

    Cette URL renvoie un code secret à usage unique qui reste valide jusqu'à ce que vous l'actualisez pour obtenir un nouveau code secret, ou vous l'utilisez avec get_token pour générer un un jeton d'accès. Exemple :

  3. Saisissez le code secret. L'utilitaire get_token obtient les jetons OAuth2, imprime le jeton d'accès dans stdout, et écrit les jetons d'accès et d'actualisation à ~/.sso-cli.

  4. Appeler l'API Edge et transmettre le jeton d'accès dans Authorization: Bearer comme le montre l'exemple suivant:
    curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
      -H "Authorization: Bearer ACCESS_TOKEN"

    La valeur du jeton d'accès peut être copiée à partir de stdout.

    Cet exemple permet d'obtenir des informations sur l'organisation concernée. Pour obtenir la liste complète Points de terminaison de l'API, consultez la documentation de référence de l'API Apigee Edge.

Lorsque votre jeton d'accès expire, vous pouvez rappeler get_token pour obtenir un nouvel accès à partir d'un jeton d'accès. Exemple :

get_token -u me@example.com

Vous ne serez pas invité à saisir de nouveau code secret avant l'expiration du jeton d'actualisation.

Lorsque le jeton d'actualisation expire, get_token vous invite à saisir un nouveau code secret. Vous devez générer un nouveau code secret avant de pouvoir générer un nouveau jeton d'accès OAuth2.

Obtenir des jetons d'accès avec le service Edge OAuth2

Vous pouvez utiliser le service Edge OAuth2 pour obtenir des jetons d'accès que vous utilisez avec SAML. Pour s'authentifier vous-même avec l'API Edge, vous utilisez un code secret lors de votre demande initiale pour obtenir un accès/une actualisation la paire de jetons, puis d'en obtenir une nouvelle.

Pour obtenir une paire de jetons avec l'API Edge:

  1. Dans un navigateur, accédez à l'URL suivante pour obtenir un code secret à usage unique:
    https://zoneName.login.apigee.com/passcode

    Par exemple, pour une zone nommée "acme", accédez à l'URL suivante:

    https://acme.login.apigee.com/passcode

    Si vous ne vous êtes pas connecté récemment via votre fournisseur d'identité, vous serez invité à vous connecter po.

    Cette URL renvoie un code secret à usage unique qui sert d'identifiant pour obtenir des jetons et qui reste valide jusqu'à ce que vous actualisiez l'URL pour obtenir un nouveau code secret, ou vous pouvez utiliser le code secret avec get_token pour générer un jeton d'accès. Exemple :

  2. Envoyez une requête à l'API Edge, comme le montre l'exemple suivant:
    curl https://zoneName.login.apigee.com/oauth/token \
          -s \
          -H "Accept: application/json" \
          -d 'grant_type=password&response_type=token&passcode=passcode'

    Le passcode sert d'identifiant pour l'autorisation.

    Où :

    • L'en-tête Authorization est "Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" (utilisez ce la valeur exacte).
    • Le type de requête est POST.
    • Le corps de la requête contient les éléments suivants: <ph type="x-smartling-placeholder">
        </ph>
      • grant_type est "password".
      • response_type est "jeton".
      • passcode, où passcode est le code secret renvoyé à l'étape précédente.

    L'appel imprime les jetons d'accès et d'actualisation à l'écran.

Pour actualiser votre jeton d'accès:

Envoyez une demande à https://zoneName.login.apigee.com/oauth/token, comme le montre l'exemple suivant:

curl https://zoneName.login.apigee.com/oauth/token \
      -d 'grant_type=refresh_token&refresh_token=REFRESH_TOKEN'

Où :

  • Le corps de la requête contient les éléments suivants: <ph type="x-smartling-placeholder">
      </ph>
    • grant_type est "refresh_token".
    • refresh_token est la valeur du jeton d'actualisation.
  • L'en-tête Authorization est "Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" (utilisez ce la valeur exacte).
  • Le type de requête est POST.

Accéder à l'API Edge avec SAML

Vous pouvez utiliser des outils tels que curl ou l'utilitaire pratique Apigee acurl. à accéder à l'API Edge.

Avec curl, vous appelez l'API Edge et transmettez le jeton d'accès dans le Authorization: Bearer, comme le montre l'exemple suivant:

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

Avec acurl, vous n'avez pas besoin de spécifier l'en-tête Authorization. Exemple :

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

Ces exemples appellent un point de terminaison de l'API Edge qui obtient des détails sur l'organisation donnée. Pour obtenir une liste complète des points de terminaison de l'API Edge, consultez la documentation de référence de l'API Apigee Edge.

D'autres méthodes d'appel de l'API, y compris des moyens de s'assurer que votre jeton reste d'actualisation, voir Accéder à l'API Edge avec OAuth2.

Utilisateurs de la machine dans les zones SAML

Vous pouvez créer un script d'accès automatisé à l'aide des utilitaires acurl et get_token aux API Edge pour les utilisateurs machine dans les zones SAML. 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 '' --force-basic-auth)
  curl -H "Authorization: Bearer $TOKEN" 'https://api.enterprise.apigee.com/v1/organizations/...'

Dans l'exemple ci-dessus, définir la valeur de -m sur une chaîne vide empêche un utilisateur machine d’être invité à entrer un code MFA. L'option --force-basic-auth remplace l'invite standard pour un code secret déclenché par des requêtes avec des zones SAML.

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 '' --force-basic-auth 'https://api.enterprise.apigee.com/v1/organizations/...'