Skicka en HTTP-förfrågan med Basic-autentisering

Rust:
Skicka en HTTP-förfrågan med Basic-autentisering

Hur gör man:

use reqwest::header::{Authorization, Basic};
use std::error::Error;

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    let client = reqwest::Client::new();
    let user = "example_username";
    let password = "example_password";
    let auth_value = Basic { username: user.into(), password: Some(password.into()) };

    let response = client.get("https://example.com/protected")
        .header(Authorization(auth_value))
        .send()
        .await?;

    println!("Status: {}", response.status());
    println!("Body: {:?}", response.text().await?);

    Ok(())
}

Exempelutdata:

Status: 200 OK
Body: "Lyckades ansluta till den skyddade resursen."

Fördjupning

HTTP Basic Authentication introducerades i HTTP/1.0-specifikationerna och har sedan dess varit ett enkelt sätt att skydda webbresurser. Det anses inte vara det säkraste metoden eftersom det baseras på obfuskerade (inte krypterade) användaruppgifter. Alternativ inkluderar OAuth, API-nycklar och JWT (JSON Web Tokens), som alla erbjuder striktare säkerhet. När du använder grundläggande autentisering i Rust, hanterar reqwest-paketet det mesta av komplexiteten, såsom att base64-koda autentiseringsuppgifterna, automatisera headers och hantera HTTP-sessionen.

Se också