Passer la porte : clés d'API, Bearer/JWT & OAuth2
La plupart des vrais endpoints sont verrouillés. Si vous ne savez pas automatiser le passage de la porte, vous ne pouvez pas tester ce qu'il y a derrière — donc c'est une compétence indispensable, pas un bonus.
L'idée, en une ligne
Presque chaque API verrouillée utilise l'une de trois façons de vérifier qui vous êtes. Apprenez ces trois et vous pouvez automatiser la porte de presque tout.
Les trois schémas
- Clé d'API — un secret fixe que vous envoyez à chaque appel, généralement dans un en-tête comme
X-API-Keyou en query param. Le plus simple à automatiser. Ne le codez jamais en dur ; lisez-le depuis une variable d'environnement. - Bearer / JWT — vous envoyez
Authorization: Bearer <token>. Un JWT est un token signé avec une expiration intégrée, donc un token peut expirer en pleine suite et vous donner un 401 surprise — un vrai mode d'échec à tester. - OAuth2 — le token ne vous est pas donné ; vous le gagnez. Vous POST votre client id et secret à un endpoint de token, récupérez un
access_token, puis l'attachez comme en-tête Bearer à chaque appel suivant.
Voyez-le à l'œuvre
Le flux client-credentials d'OAuth2 n'est en réalité que deux étapes : récupérer un token, puis utiliser le token. C'est le flux à automatiser de bout en bout et à présenter à un examinateur.
import os, requests
# Step 1: trade your secret for a short-lived token.
def get_token(session):
resp = session.post(
"https://auth.example.com/oauth/token",
data={"grant_type": "client_credentials",
"client_id": os.environ["CLIENT_ID"],
"client_secret": os.environ["CLIENT_SECRET"]},
timeout=5)
resp.raise_for_status()
return resp.json()["access_token"]
# Step 2: attach it as a Bearer header for every later call.
def test_authorized_call():
s = requests.Session()
s.headers["Authorization"] = f"Bearer {get_token(s)}"
r = s.get("https://api.example.com/me", timeout=5)
assert r.status_code == 200Lisez-le de haut en bas : vous avez demandé un pass au guichet des tokens, mis ce pass sur la session pour que chaque appel le porte, puis fait une requête autorisée. Récupérer, puis utiliser.
Avancé — gardez-le en sécurité et prouvez que la serrure marche
- Gardez chaque secret dans
os.environ, jamais dans le code - Mettez le token sur une
Sessionpour qu'il s'applique à tous les appels automatiquement - Ajoutez un test négatif : une requête sans en-tête Authorization devrait renvoyer 401
Basé sur le quickstart Requests (en-têtes personnalisés) et la référence HTTP Authorization de MDN
Toutes les leçons de Automatisation d'API, de zéro à confiant
- Le modèle mental HTTP & votre première collection Postman
- Recréez-le en code : requests + pytest avec état partagé
- Faites confiance à la forme : validation de schéma & test négatif
- Passer la porte : clés d'API, Bearer/JWT & OAuth2
- SQL pour testeurs : prouvez que l'API a vraiment écrit dans la BD
- Mocking & contrats : des tests rapides, hors-ligne, fiables