0Pricing
Learn Rust Coding · Leçon

Authentification et autorisation

Mettez en œuvre une authentification sécurisée des utilisateurs (par exemple avec JWT) et des mécanismes d’autorisation pour protéger les points d’accès de votre service web.

Authentification et autorisation est une leçon Learn Rust Coding gratuite sur CoddyKit. Ceci est la leçon 3 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Learn Rust Coding, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Learn Rust Coding comprend 3 leçons au total.

Sécuriser vos services web

Bienvenue ! Dans cette leçon, nous allons étudier l’authentification et l’autorisation, deux concepts essentiels pour créer des services web Rust sécurisés.

Vous apprendrez à protéger les points d’accès de votre API en vous assurant que seuls les utilisateurs légitimes peuvent y accéder, et uniquement avec les autorisations appropriées.

Authentification ou autorisation ?

Ces deux termes semblent similaires, mais ils désignent des notions différentes :

  • Authentification : vérifie qui vous êtes. C’est comme présenter votre pièce d’identité pour entrer dans un bâtiment.
  • Autorisation : détermine ce que vous avez le droit de faire. Une fois à l’intérieur, elle définit les pièces auxquelles vous pouvez accéder.

Nous allons mettre en œuvre les deux mécanismes pour sécuriser nos services web Rust.

Pourquoi sécuriser vos API ?

Protéger les points d’accès de votre API est essentiel pour plusieurs raisons :

  • Confidentialité des données : protéger les données sensibles des utilisateurs contre les accès non autorisés.
  • Intégrité du système : empêcher les acteurs malveillants de modifier ou de corrompre vos données.
  • Conformité : respecter les exigences légales et réglementaires (par exemple, GDPR et HIPAA).

Une couche de sécurité robuste renforce la confiance et protège votre application.

JSON Web Tokens (JWT)

Une méthode très répandue pour l’authentification dans les services web modernes consiste à utiliser les JSON Web Tokens (JWT), prononcés « jot ».

Les JWT sont un moyen compact et compatible avec les URL de représenter des revendications à transférer entre deux parties. Ils sont souvent utilisés pour une authentification sans état.

Cela signifie que le serveur n’a pas besoin de stocker les informations de session de chaque utilisateur.

Dans un JWT : en-tête, charge utile et signature

Un JWT se compose de trois parties, séparées par des points :

  • En-tête : contient des métadonnées sur le jeton, comme son type (JWT) et l’algorithme de signature (par exemple, HS256).
  • Charge utile : contient les « revendications » – des informations sur une entité (généralement l’utilisateur) ainsi que des données supplémentaires.
  • Signature : sert à vérifier que le jeton n’a pas été altéré. Elle est créée en encodant l’en-tête et la charge utile avec une clé secrète.

Générer et vérifier des JWT en Rust

Voyons comment générer et vérifier un JWT à l’aide de la caisse jsonwebtoken en Rust. N’oubliez pas d’ajouter jsonwebtoken, serde (avec la fonctionnalité « derive ») et chrono (avec la fonctionnalité « serde ») à votre fichier Cargo.toml.

Cet exemple génère un jeton, puis le vérifie immédiatement.

use jsonwebtoken::{encode, decode, Header, EncodingKey, DecodingKey, Validation};
use serde::{Deserialize, Serialize};
use chrono::{Utc, Duration};

#[derive(Debug, Serialize, Deserialize)]
struct Claims {
    sub: String, // Subject (user ID)
    company: String,
    exp: usize,  // Expiration time
}

fn main() {
    // --- Setup (requires crates: jsonwebtoken, serde, chrono) ---
    let secret_key = "my_super_secret_key";

    // --- 1. Generate a JWT ---
    let my_claims = Claims {
        sub: "user123".to_string(),
        company: "CoddyKit".to_string(),
        exp: (Utc::now() + Duration::minutes(10)).timestamp() as usize,
    };
    let token = encode(
        &Header::default(),
        &my_claims,
        &EncodingKey::from_secret(secret_key.as_ref()),
    ).expect("Failed to encode token");
    println!("Generated JWT:\n{}", token);
    println!("\n--- Verifying the Token ---");

    // --- 2. Verify the JWT ---
    let validation = Validation::default();
    let decoded_result = decode::<Claims>(
        &token,
        &DecodingKey::from_secret(secret_key.as_ref()),
        &validation,
    );

    match decoded_result {
        Ok(token_data) => {
            println!("Token valid!");
            println!("Subject: {}", token_data.claims.sub);
            println!("Company: {}", token_data.claims.company);
        },
        Err(err) => println!("Token invalid: {:?}", err),
    }
}

Autorisation&nbsp;: définir les accès

Une fois l’utilisateur authentifié (nous savons qui il est), l’autorisation détermine les ressources ou les actions auxquelles il est autorisé à accéder.

Parmi les modèles d’autorisation courants figurent :

  • Contrôle d’accès basé sur les rôles (RBAC) : des rôles sont attribués aux utilisateurs (par exemple, « administrateur », « éditeur » ou « lecteur »), et chaque rôle possède des autorisations particulières.
  • Contrôle d’accès basé sur les attributs (ABAC) : l’accès est accordé en fonction des attributs de l’utilisateur, de la ressource ou de l’environnement.

Concept de middleware d’autorisation

Dans un service web, l’autorisation est souvent gérée par un middleware. Il s’agit d’un code qui s’exécute avant votre fonction principale de traitement de route.

Le middleware :

  1. extrait l’identité de l’utilisateur authentifié (par exemple, depuis un JWT) ;
  2. vérifie ses rôles ou ses autorisations par rapport aux accès requis pour le point d’accès demandé ;
  3. s’il est autorisé, laisse la requête continuer ; sinon, renvoie une erreur « Non autorisé » ou « Accès interdit ».

Cela permet de garder vos fonctions de traitement de routes claires et concentrées sur la logique métier.

Testez vos connaissances

Vérifions rapidement votre compréhension de l’authentification et de l’autorisation.

Récapitulatif&nbsp;: sécuriser les services web

Excellent travail ! Dans cette leçon, vous avez découvert les notions essentielles pour sécuriser vos services web Rust :

  • La différence entre l'authentification (qui vous êtes) et l'autorisation (ce que vous pouvez faire).
  • L'importance de protéger les points d'accès de l'API.
  • Le fonctionnement des jetons Web JSON (JWT) pour l'authentification sans état, notamment leur structure.
  • Un exemple pratique en Rust de génération et de vérification de JWT.
  • Les concepts du contrôle d'accès basé sur les rôles et la manière dont un intergiciel peut effectuer des vérifications d'autorisation.

Vous êtes maintenant prêt à créer des applications Rust plus sûres et plus robustes !

Questions Fréquemment Posées

La leçon « Authentification et autorisation » est-elle gratuite ?

Oui — le texte complet de « Authentification et autorisation » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Learn Rust Coding, passe à CoddyKit PRO. Le cours Learn Rust Coding comprend 3 leçons au total.

Qu'est-ce que j'apprendrai dans « Authentification et autorisation » ?

Mettez en œuvre une authentification sécurisée des utilisateurs (par exemple avec JWT) et des mécanismes d’autorisation pour protéger les points d’accès de votre service web. Tu pratiques Learn Rust Coding avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Learn Rust Coding ?

Aucune expérience préalable n'est requise. Learn Rust Coding sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 3.

Combien de temps prend la leçon « Authentification et autorisation » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Learn Rust Coding ?

Oui. Chaque leçon Learn Rust Coding inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. API REST avec Actix-web/Rocket
  2. Intégration de bases de données (SQLx/Diesel)
  3. Authentification et autorisation
← Retour à Learn Rust Coding