Accueil > Comment utiliser Starlette-Context pour faire circuler les jetons d’autorisation entre vos APIs FastAPI ?
Marwan DARWISH
30 mai 2023
Read this post in English

Comment utiliser Starlette-Context pour faire circuler les jetons d’autorisation entre vos APIs FastAPI ?

Comment utiliser Starlette-Context pour faire circuler les jetons d'autorisation entre vos APIs FastAPI ?

Dans cet article, nous allons voir comment utiliser Starlette-Context avec FastAPI pour faire circuler les jetons d’autorisation entre vos différents microservices.

L’authentification et l’autorisation sont des parties importantes de tout système informatique pour s’assurer que les données sont sécurisées, et que les utilisateurs ne peuvent accéder qu’aux ressources pour lesquelles ils ont les autorisations nécessaires. Dans le cadre de microservices, il est souvent nécessaire de faire circuler les jetons d’autorisation entre les différents services pour garantir la sécurité des données de bout en bout de l’application.

FastAPI est un framework Python populaire pour la création d’applications web. Il offre une variété de fonctionnalités pour faciliter le développement, comme la validation des entrées et la génération de documentation automatique. Cependant, il peut parfois être difficile de partager des informations entre différents composants de l’application, tels que les préférences d’utilisateur, ou les contextes de requête, et plus particulièrement les jetons d’authentification.

Heureusement, Starlette-Context peut aider à résoudre ce problème. Starlette-Context est une bibliothèque pour Python qui fournit un contexte pour les applications web développées avec le framework Starlette, dont FastAPI. Elle permet de stocker, et de partager des informations entre différents composants de l’application, tels que des middlewares, des routes, et autres tâches asynchrones.

Cela signifie que vous pouvez partager des données en tant que contexte dans votre application sans les passer explicitement en tant que paramètres.

Pour la suite de l’article, nous prendrons l’exemple de l’id token (Bearer) que fournit l’Easy Auth Azure en réponse à une requête vers /.auth/me côté front end, qui va être requis pour faire des requêtes vers un microservice, qui lui-même peut faire d’autres requêtes authentifiées vers d’autres microservices, tout cela en utilisant le même token de bout en bout.

Azure Easy Auth est un service de Microsoft qui permet de gérer l’authentification et l’autorisation dans les applications Cloud. Il peut être utilisé pour authentifier les utilisateurs avec leurs comptes Microsoft, Google, Facebook, etc. Pour mettre en œuvre Azure Easy Auth dans votre application, vous devez suivre les étapes expliquées dans notre précédent article de blog.

 

Comment mettre en place Starlette-Context ?

 

En premier lieu, on doit installer la bibliothèque starlette-context en utilisant pip :

`pip install starlette-context

 

FastAPI permet d’utiliser les dépendances pour injecter des valeurs dans les fonctions de route, y compris les données du contexte. Pour ce faire, nous pouvons utiliser la fonction `Depends` et un générateur qui lie les données du contexte pour la durée du cycle de la requête.

Voici un exemple de comment définir une route qui utilise le contexte partagé pour faire un appel authentifié à un autre microservice :

 

Ce code utilise `my_context_dependency` pour récupérer le header `Authorization`, et le stocker dans le contexte de la requête. Ce contexte peut ensuite être utilisé pour inclure le jeton d’authentification dans les headers de la requête aiohttp faite à un autre microservice. Si ce microservice est une API FastAPI (ou starlette), et qu’il doit également faire des appels authentifiés vers d’autres microservices, il suffit de répéter ce processus au niveau inférieur, jusqu’à ce que l’on ait atteint la granularité souhaitée.

Pour accéder au contexte, il suffit d’importer `context` depuis la librairie :

`from starlette_context import context`.

 

Puis on peut accéder aux éléments du contexte comme on accède aux données d’un dictionnaire classique.

Par exemple ici : `context[“authorization”]`

 

Starlette-Context : l’essentiel à retenir

 

Nous avons vu ensemble comment utiliser Starlette-Context avec FastAPI pour transmettre des informations d’authentification entre différents microservices. Vous pouvez personnaliser le snippet de code fourni en fonction de vos besoins et de votre architecture de microservices.

Vous souhaitez en savoir plus ? Eclaircir un point spécifique ? N’hésitez pas à laisser un commentaire sous cet article !

Offres d'emploi consultant Cloud Paris Lyon Nantes Cellenza

 

Nos autres articles
Commentaires
Laisser un commentaire

Restez au courant des dernières actualités !
Le meilleur de l’actualité sur le Cloud, le DevOps, l’IT directement dans votre boîte mail.