Passer au contenu principal
Dans cette section du tutoriel, nous allons examiner en détail notre API et l’application de communication entre machines qui lui est associée. Pour commencer, lisez Applications serveur avec API.
Pour des raisons de simplicité, notre implémentation se concentrera uniquement sur l’authentification et l’autorisation. Comme vous le verrez dans les exemples, l’entrée de la feuille de temps sera codée en dur et l’API ne conservera pas l’entrée de la feuille de temps. Au lieu de cela, elle renverra simplement certaines informations.

Définir les points de terminaison de l’API

Un point de terminaison d’API est un URI statique qui représente une ressource (collection de données). Par exemple, une API de restaurant pourrait avoir des points de terminaison tels que /orders et /customers. Une application qui se connecte à cette API peut effectuer des opérations CRUD (create, read, update, delete) en appelant un point de terminaison d’API à l’aide de la méthode HTTP associée (POST, GET, PUT, PATCH ou DELETE). Pour l’API Timesheets (feuilles de temps) de ExampleCo, vous devrez configurer un point de terminaison pour pouvoir créer des entrées dans les feuilles de temps.
Méthode HTTPPoint de terminaison APIDescription
POST/timesheets/uploadCrée une nouvelle entrée de feuille de temps
{
  'user_id': '007',
  'date': '2017-05-10T17:40:20.095Z',
  'project': 'StoreZero',
  'hours': 5
}
Si l’API traite la demande avec succès, elle envoie une réponse avec un code d’état HTTP 201 Created et un corps contenant un objet JSON avec une propriété message qui décrit la feuille de temps nouvellement créée :
{
"message": "Created timesheet 14 for employee 007."
}
Voir l’implémentation dans Node.js.

Sécuriser les points de terminaison de l’API

Pour sécuriser le ou les points de terminaison de votre API, vous devez implémenter une fonction logiciel médiateur au sein de votre application API afin de gérer les jetons. Cette fonction vérifie si un jeton a été inclus dans la demande d’API, valide le jeton, puis confirme si la ou les permissions nécessaires à l’exécution de l’action demandée sont présentes. Si tous les critères sont remplis, l’application API répond par le message indiqué précédemment. En cas de problème avec le jeton d’accès fourni (ou s’il n’est pas fourni du tout), l’application API envoie une réponse avec le code d’état HTTP 401 Unauthorized. Voir l’implémentation dansNode.js.

Obtenir un jeton d’accès

Pour obtenir un jeton d’accès sans utiliser notre exemple d’implémentation d’application, appelez le point de terminaison Obtenir un jeton de l’Authentication API Auth0 avec la charge utile suivante :
{
  audience: "{yourApiIdentifier}",
  grant_type: "client_credentials",
  client_id: "${account.client_id}",
  client_secret: "${account.client_secret}"
}

Vérifiez les permissions de l’application

Nous avons maintenant sécurisé le point de terminaison de notre API avec un jeton d’accès, mais nous ne nous sommes toujours pas assurés que le processus appelant l’API a le droit de publier une nouvelle entrée de feuille de temps. Comme indiqué précédemment, chaque jeton d’accès peut inclure une liste de permissions accordées à l’application. Ces autorisations sont définies à l’aide du paramètre de requête scope. Consultez le paragraphe Configurer les permissions pour savoir comment procéder à cette configuration. Pour notre point de terminaison, nous aurons besoin de la permission batch:upload. Voir l’implémentation dansNode.js.

Implémentation de l’application de communication entre machines

Dans cette section, nous verrons comment nous pouvons implémenter une application entre machines pour notre scénario.

Obtenir un jeton d’accès

Nous commencerons par invoquer le point de terminaison de l’API Auth0 /oauth/token pour obtenir un jeton d’accès. Pour ce faire, nous aurons besoin des valeurs de configuration suivantes, que vous trouverez dans les paramètres de votre application :
  • Domaine : Domaine Auth0 ainsi que votre identifiant de locataire. Cette valeur figure dans l’URL de l’API : https://{yourTenant}/oauth/token.
  •  : Identifiant de l’API
  • ID client : ID client de l’application Auth0.
  • Secret client : Secret client de l’application Auth0.
Notre implémentation doit effectuer une opération POST  vers le point de terminaison https://{yourDomain}/oauth/token  avec une charge utile au format suivant :
{
  "audience": "{yourApiIdentifier}",
  "grant_type": "client_credentials",
  "client_id": "${account.client_id}",
  "client_secret": "${account.client_secret}"
}
Pour en savoir plus, consultez Appeler votre API à l’aide du Flux des identifiants client. Voir l’implémentation dansPython.

Invoquer l’API

Maintenant que nous disposons d’un jeton d’accès qui inclut les permissions valides, nous pouvons invoquer notre API. Pour ce faire, nous allons effectuer les opérations suivantes :
  • Établir une entrée de feuille de temps codée en dur au format JSON.
  • Ajouter le jeton d’accès en tant qu’en-tête Authorization à notre demande.
  • Effectuer la demande HTTP POST.
  • Analyser la réponse et l’imprimer dans le terminal (facultatif).
Voir l’implémentation dansPython.
I