Aller au contenu principal

Le site sera en maintenance le 19/04/2026 entre 09h30 et 12h00.

Aller au contenu principal

Authentification API (JWT)

Apprendre Flask : Le Guide Ultime
3 min de lecture
0 commentaires
Gratuit

Pour une API, les cookies de session (qu'on a vus avant) ne sont pas idéaux (surtout si ton frontend est sur un autre domaine, ou si c'est une app mobile).

Le standard, c'est le JWT (JSON Web Token).

Le principe

  1. L'utilisateur envoie login/password.
  2. Le serveur vérifie et renvoie un Token (une longue chaîne cryptée) : eyJhbGciOiJIUzI1NiIsInR5c....
  3. À CHAQUE requête suivante, le client doit renvoyer ce token dans le header Authorization: Bearer <token>.
  4. Le serveur déchiffre le token. S'il est valide, il sait qui c'est. Pas besoin de base de données pour vérifier la session !

Installation

pip install flask-jwt-extended

Implémentation

from flask_jwt_extended import JWTManager, create_access_token, jwt_required, get_jwt_identity

app.config["JWT_SECRET_KEY"] = "super-secret" 
jwt = JWTManager(app)

# Login pour avoir le token
@app.route("/api/login", methods=["POST"])
def login():
    username = request.json.get("username", None)
    password = request.json.get("password", None)
    
    # (Vérifier le password en vrai ici avec check_password_hash)
    if username != "admin" or password != "admin":
        return jsonify({"msg": "Bad username or password"}), 401

    # Créer le token
    access_token = create_access_token(identity=username)
    return jsonify(access_token=access_token)

# Route protégée
@app.route("/api/protege", methods=["GET"])
@jwt_required() # <-- Bloque si pas de token valide
def protected():
    current_user = get_jwt_identity() # Récupère l'info cachée dans le token
    return jsonify(logged_in_as=current_user)

C'est le standard de l'industrie pour sécuriser les API modernes.

Commentaires (0)

Laisser un commentaire

Aucun commentaire pour le moment. Soyez le premier à commenter !