Forum Français

Reply
Highlighted
Aruba Employee
Posts: 1
Registered: ‎07-20-2016

REST API & Python

 

«Programmabilité», «Python», «RESTfull»,  «API», sont des termes qui reviennent souvent.   

Aruba a fait des API et de la programmabilité sa force. Par exemple, les produits suivants supportent les API et disposent d’une documentation complète qui reprend l’ensemble des méthodes supportées, le format des données et les  informations retournées :

  • ArubaOS Switches,
  • Mobility Master 8.X,
  • Airwave,
  • ClearPass,
  • VAN SDN Controller,
  • ALE,
  • Aruba Central.

Vous l’aurez compris, nous allons  parler API et Scripting Python. 

L’objectif de cet article est de vous donner une vue générale sur les  RESTfull API et  de vous fournir les outils nécessaires pour construire un environnement de test  qui vous permettra de faire des test d’appels API vers le ClearPass.

 

Qu’est-ce qu’une architecture API RESTfull Web Service ?

D’abord, commençons par définir qu’est-ce qu’un Service Web? Un Service Web est le moyen de communication entre deux systèmes ou applications  via une interface prédéfinie (API).  Il existe deux principaux types de Services Web : REST (le plus répandu aujourd’hui) et SOAP.

Sans rentrer dans les détails (ce n’est pas notre objectif) REST (REpresentational State Transfert) est un modèle d’architecture qui permet de définir des applications et rendre toutes les ressources de ces applications accessible via une URL. Il est implémenté en utilisant HTTP.

Une API (Application Programming Interface) est une collection de règles qui décrivent le moyen et les mécanismes d’interaction entre ces applications.

 

 Ce qui suit tend à donner une vue générale d’un design API et les principaux éléments à connaitre pour une intégration réussie :

 

API Authentification :

En général, les API nécessitent une authentification car elles permettent l’accès à des ressources protégées. Il existe plusieurs méthodes pour authentifier et autoriser  les accès API :

  • Aucune authentification: la ressource Web API est publiquement accessible. En général pour des appels GET (en lecture).
  • Basic HTTP : un nom d’utilisateur et mot de passe est ajouté en paramètre de la requête HTTP à chaque appel API.
  • Auth-Token : Ce Token est généré depuis le WEB API Serveur (par exemple, depuis ClearPass) et placé dans chaque appel API. Ce token est précédé par un mot clé qui diffère selon les serveurs WEB API (exemple : ClearPass utilise le mot clé "Bearer"). Ceci permet aussi de gérer la durée de validité du Token.
  • OAuth 2.0 : OAuth est un protocole libre qui permet de générer un « Access Token » depuis un serveur d’autorisation. En résumé, il permet d’autoriser une application client à utiliser une API sécurisée d’une autre application pour le compte d’un utilisateur. Il permet aussi de gérer la durée de vie du Token, de le révoquer ou de le prolonger et une gestion des sessions.

API URL

Pour faire des appels API, il faut spécifier l’URL de la ressource qu’on veut atteindre. Cette URL est disponible dans la documentation API de chaque application. Par exemple : l’URL suivante : https://<Adresse IP du ClearPass>/api/guest   permet d’atteindre la base Guest qui contient tous les comptes visiteurs dans ClearPass.

 

Méthodes HTTP :

L’ensemble des méthodes supportées par HTTP, par exemple :

  • GET: pour récupérer une ressource,
  • POST: pour modifier une ressource,
  • PUT: pour créer une ressource,
  • DELETE: pour supprimer une ressource.

 Le Payload ou Data:

C’est la donnée envoyée ou recherchée par un appel API. Elle est présentée sous différents formats les plus connus sont Extensible Markup Language (XML) ou JavaScript Object Notation(JSON).

 

En résumé, RESTfull API utilise les méthodes HTTP pour manipuler les données depuis/vers un serveur et retourne (selon le type de la requête) ces données sous format JSON ou XML.

 

 Comment cela fonctionne ?

Exemple : je veux interroger l’API Guest de mon ClearPass pour récupérer l'ensemble des comptes Guest. Le schéma ci-dessous résumé la requête et la réponse que je souhaite avoir.

 

Comment cela fonctionne.png

 

 

Comment se présente une requête REST API

Pour faire une requête ou appel REST API, il faut spécifier les éléments suivants :

  • Spécifier la méthode : GET, POST, PUT, DELETE,
  • Spécifier l’URL : par exemple: https://<AdresseIP_ClearPass>/api/guest   
  • Spécifier l’authentification : Aucune, Basic HTTP, OAuth, Auth-Token,
  • Personnaliser les Headers : HTTP headers.
  • Corps de la requête (Optionnel) : JSON ou XML pour compléter la requête.

 Quelle est la réponse REST

La réponse correspond aux codes de statuts HTTP :

 Le schéma ci-dessous représente un exemple d’une requête API REST :

exempled e requete REST.png

 

Préparation de l’environnement de test

 

Maintenant, que nous avons une idée plus claire sur ces API…. si nous faisions un Test d’appel API vers ClearPass.

J’utilise les outils suivants pour mon environnement de test :

 

  • Python 3: Python est préinstallé dans les distributions Linux et Mac OS. Pour Windows vous avez besoin de le télécharger en suivant le lient : https://www.python.org/downloads/. Vous pouvez vérifier la bonne installation en tappant la commande « Python » dans l’invite de commande. Il est nécessaire de compléter l’installation de Python sur Windows avec les modules « Requests » et « Simplejson » en utilisant la commande pip :
    C:\WINDOWS\system32>python -m pip install requests
    C:\WINDOWS\system32>python -m pip install simplejson
  • PyCharm : j’utilise PyCharm comme éditeur de text (IDE) pour mes scripts Python, mais vous pouvez utiliser d’autres IDE (Notepad++, Atom, Sublime text , …). PyCharm est disponible :https://www.jetbrains.com/pycharm/
  • Postman : est un outil pour appeler/tester une API Web.  Il existe la version intégrée au navigateur (extension chrome par exemple) ou la version application package. Vous pouvez le télécharger à l’adresse suivante : https://www.getpostman.com/ . Vous pouvez aussi utiliser la ligne de commande en utilisant curl : http://curl.haxx.se/docs/httpscripting.html#GET

 

Exemple 1 : Utiliser Postman pour afficher les comptes Guest de ClearPass

 

En  utilisant Postman, je vais afficher l’ensemble  des comptes Guest sur ClearPass. L’anatomie de mon appel API est :

  • Méthode : GET
  • URL : https://<adressIP ClearPass>/api/guest
  • Header : Token à insérer

 Pour rappel, la documentation API de ClearPass est disponible à l’adresse suivante: https://<adressIP ClearPass>/api-doc

 

La capture d’écran suivante représente la réponse obtenue:


anatomi call API.png

 

 

Exemple 2 : Utiliser un script Python pour afficher les comptes Guest de ClearPass :

  

Nous allons utiliser le script Python suivant pour afficher l’ensemble des comptes Guest :

import requests
import json
import argparse
import pprint

url = "https://10.14.120.30:443/api/guest"  #URL de mon ClearPass
token="ad06e7c39776163163f12d3eaa6d9090063f2066"#Remplacer par le Token généré depuis ClearPass
headers={'Authorization':'Bearer ' + token}
response= requests.get(url, headers=headers ,verify=False)

response_json = response.json() #réponse sous format JSON
pprint.pprint(response_json) #utiliser la commande pretty Print pour afficher le résultat

réponse Python.png

En résumé, nous avons vu d’une manière générale ce que c’est une architecture RESTfull API et comment faire des appels API (ici vers  ClearPass) en utilisant Postman et Python.

 

Alors « To API or not to API »……..

A bientôt……..

 

 

 

 

 

Aruba Employee
Posts: 38
Registered: ‎11-03-2015

Re: REST API & Python

Excellent ! Merci Kamel !

Regular Contributor I
Posts: 184
Registered: ‎04-13-2009

Re: REST API & Python

Merci pour l'intro :)

ACMP 6.4 / ACMX #107
Search Airheads
Showing results for 
Search instead for 
Did you mean: