การส่งคำขอ HTTP ด้วยการตรวจสอบสิทธิ์พื้นฐาน

Rust:
การส่งคำขอ HTTP ด้วยการตรวจสอบสิทธิ์พื้นฐาน

วิธีการ:

ก่อนอื่น ใส่ crate ที่จำเป็นลงใน 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!("Response: {}", content);
    
    Ok(())
}

ถ้าถูกต้อง มันจะพิมพ์ข้อมูลลับออกมา คุณเข้าใจแนวคิดนี้แล้ว

ลงลึก

ก่อนหน้า reqwest, คุณจะเห็นคนจัดการกับ curl ใน Rust มันเหมือนกับการชอบใช้เลื่อยมือมากกว่าเลื่อยไฟฟ้า การยืนยันตัวตนแบบพื้นฐาน ถึงแม้จะง่ายดาย แต่ไม่ใช่ Fort Knox มันเพียงแค่การเข้ารหัส Base64 ของ “username:password” – ไม่มีการเข้ารหัส, ดังนั้น HTTPS จึงเป็นสิ่งจำเป็น

ทางเลือกอื่น? OAuth 2.0 เต้นรอบ ๆ Basic, โดยเสนอโทเค็นแทนข้อมูลรับรองที่จับต้องได้ อย่างไรก็ตาม มันซับซ้อน จากนั้นมีการยืนยันตัวตน Bearer, ถือโทเค็นเหมือนกับการจับมือลับ

โดยลึกซึ้ง, reqwest เป็นไคลเอ็นต์ HTTP ระดับสูงที่เข้ากันได้ดีกับคุณสมบัติ async ของ Rust ‘Basic’ struct สร้างส่วนหัว, ‘Authorization’ ใส่มันลงไป, และพร้อม, คุณกำลังเคาะประตูเซิร์ฟเวอร์ด้วยการกระซิบลับ

ดูเพิ่มเติม

สำหรับเรื่องราวและเวทย์มนตร์เพิ่มเติม: