Отправка HTTP-запроса с базовой аутентификацией

Rust:
Отправка HTTP-запроса с базовой аутентификацией

Как это сделать:

Сначала добавьте необходимые зависимости в файл Cargo.toml:

[dependencies]
reqwest = "0.11"
base64 = "0.13"

Теперь вот код на Rust для отправки GET-запроса с базовой аутентификацией:

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 = "Aladdin";
    let password = "open sesame";
    
    let auth = Basic {
        username: user.into(),
        password: Some(password.into()),
    };
    
    let response = client
        .get("http://example.com/secrets")
        .header(Authorization(auth))
        .send()
        .await?;
    
    let content = response.text().await?;
    println!("Ответ: {}", content);
    
    Ok(())
}

Если всё правильно, то будут напечатаны секреты. Вы поняли основную идею.

Подробнее

До появления reqwest люди мучились с curl на Rust. Это как предпочесть ручную пилу электрической. Базовая аутентификация, хоть и кажется простой, не является крепостью типа Форт-Нокс. Это всего лишь Base64 от “имя пользователя:пароль”, без шифрования, поэтому HTTPS является обязательным.

Альтернативы? OAuth 2.0 значительно опережает базовую аутентификацию, предлагая токены вместо конкретных учетных данных. Тем не менее, это сложнее. Есть также аутентификация Bearer, которая держит токены как секретный рукопожатие.

Под капотом, reqwest является высокоуровневым HTTP-клиентом, хорошо работающим с асинхронными возможностями Rust. Структура ‘Basic’ создает заголовок, ‘Authorization’ вставляет его, и вуаля, вы стучитесь в дверь сервера с секретным шепотом.

Смотрите также

Для большего количества знаний и магии: