Envoi d'une requête HTTP avec authentification de base

Rust:
Envoi d'une requête HTTP avec authentification de base

Comment faire :

extern crate reqwest;
extern crate base64;

use reqwest::header::{Authorization, Basic};

fn main() -> Result<(), reqwest::Error> {
    let client = reqwest::blocking::Client::new();
    let user = "utilisateur";
    let password = "motdepasse";
    let encoded_credentials = base64::encode(format!("{}:{}", user, password));
  
    let res = client
        .get("http://exemple.com/route_protégée")
        .header(Authorization(Basic { username: user.to_string(), password: Some(password.to_string()) }))
        .send()?;

    println!("Status: {}", res.status());
    println!("Headers:\n{:?}", res.headers());
  
    Ok(())
}

Sortie attendue :

Status: 200 OK
Headers:
{
    // Détails d'en-tête typiques ici
}

Plongée Profonde

Historiquement, l’authentification de base a été l’un des premiers mécanismes pour sécuriser les communications HTTP, mais elle n’est pas aussi sûre que des méthodes modernes comme OAuth. En Rust, la bibliothèque reqwest est souvent utilisée pour les requêtes HTTP, tandis qu’Authorization et Basic proviennent de ses modules header. On encode les créances en Base64 pour suivre le standard HTTP, mais notez que cela n’offre pas de chiffrement. Les alternatives incluent des systèmes d’authentification plus complexes comme les jetons Bearer, l’authentification Digest, ou même utiliser HTTPS pour ajouter une couche de sécurité avec SSL/TLS.

Voir aussi

  • La documentation reqwest pour une exploration plus poussée : reqwest doc
  • Le RFC 7617 du standard HTTP Basic authentication : RFC 7617
  • Une introduction à l’encodage Base64 : Base64 Encoding