Edge pour Private Cloud v. 4.17.09
L'authentification de base est un moyen de s'authentifier lors des appels vers 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 les identifiants de l'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 désactiver l'authentification de base. Si vous désactivez l'authentification de base, tous les scripts (scripts Maven, scripts shell, apigeetool
, etc.) qui s'appuient sur des appels d'API de gestion Edge compatibles avec 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 des jetons d'accès OAuth2 dans l'en-tête Bearer.
Utiliser get_token pour obtenir et actualiser des jetons
L'utilitaire get_token
échange vos identifiants d'authentification de base et un code d'accès contre un jeton d'accès et un jeton 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, les identifiants de l'utilisateur sont demandés.
L'utilitaire get_token
stocke les jetons sur le disque, prêts à être utilisés si nécessaire. Il imprime également un jeton d'accès valide dans stdout.
Vous pouvez alors utiliser Postman ou l'intégrer dans une variable d'environnement à utiliser dans curl.
La procédure suivante explique comment utiliser get_token
pour obtenir un jeton d'accès OAuth2 afin d'effectuer des appels d'API de gestion Edge:
- 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"
où 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 Edge SSO, utilisez
https
et le numéro de port TLS approprié. - Décompressez le bundle
ssocli-bundle.zip
:unzip ssocli-bundle.zip
- Installez
get_token
dans/usr/local/bin
:
./install
Utilisez l'option
-b
pour spécifier un autre emplacement:./install -b path
- Définissez la variable d'environnement
SSO_LOGIN_URL
sur votre URL de connexion, sous la forme :export SSO_LOGIN_URL="http://edge_sso_IP_DNS:9099"
où edge_sso_IP_DNS est l'adresse IP du nom DNS de la machine hébergeant le module Edge SSO. Si vous avez configuré TLS sur l'authentification unique Edge, utilisez
https
et le numéro de port TLS approprié. - 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 Edge, utilisez
https
et le numéro de port TLS approprié.Cette URL 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. - Appelez
get_token
pour obtenir le jeton d'accès OAuth2:
get_token -u emailAddress
où emailAddress est l'adresse e-mail d'un utilisateur Edge. Vous êtes invité à saisir le code secret à usage unique que vous avez obtenu à l'étape 3 :
One Time Code ( Get one at https://edge_sso_IP.com/passcode ) Enter the passcode if SAML is enabled or press ENTER:
Saisissez le code secret. L'utilitaire
get_token
obtient le jeton d'accès OAuth2, l'imprime à l'écran, puis l'écrit avec 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
sous la forme suivante :get_token -u emailAddress -p passcode
- 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 l'obtenir et le transmettre à un appel d'API en une seule commande, comme indiqué ci-dessous :
header=`get_token` && curl -H "Authorization: Bearer $header" https://ms_IP:8080/v1/o/orgName
Avec cette forme de la commande, si le jeton d'accès a expiré, il est automatiquement actualisé jusqu'à l'expiration du jeton d'actualisation.
Une fois le jeton d'actualisation expiré, get_token
vous demande de 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
La page Utiliser la sécurité OAuth2 avec l'API de gestion Apigee Edge contient des instructions expliquant comment utiliser l'API de gestion Edge pour obtenir et actualiser des jetons. Vous pouvez également utiliser des appels d'API Edge pour les jetons générés à partir d'assertions SAML.
La seule différence entre les appels d'API documentés dans Utiliser 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. De plus, 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 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=refreshToken'