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

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

วิธีทำ:

เพื่อส่งคำขอ HTTP พร้อมการตรวจสอบสิทธิ์แบบพื้นฐานใน Elixir, คุณสามารถใช้ไลบรารี HTTPoison:

# เพิ่ม HTTPoison ลงในการอ้างอิงของโปรเจกต์ใน mix.exs
defp deps do
  [
    {:httpoison, "~> 1.8"}
  ]
end

# ตอนนี้เรามาทำคำขอพร้อม auth พื้นฐานกัน

# รัน `mix deps.get` เพื่อดึงขึ้นความต้องการ

# ในโค้ด Elixir ของคุณ
defmodule BasicAuthRequest do
  def send_request do
    # ใช้ Base64 แปลงข้อมูลประจำตัว "username:password"
    basic_auth =
      "username:password"
      |> Base.encode64()

    # ตั้งค่าส่วนหัว Authorization
    headers = [{"Authorization", "Basic #{basic_auth}"}]

    # ทำคำขอ GET ไปที่ https://example.com/protected-resource
    HTTPoison.get("https://example.com/protected-resource", headers)
  end
end

# เรียกใช้ฟังก์ชัน
{:ok, response} = BasicAuthRequest.send_request()
IO.inspect(response.status_code)  # ควรจะได้ 200 ถ้าการตรวจสอบสิทธิ์สำเร็จ

หากการตรวจสอบสิทธิ์แบบพื้นฐานสำเร็จ คุณจะได้รับรหัสสถานะ 200 การตรวจสอบไม่สำเร็จจะได้รับ 401 โดยทั่วไป

ขุดลึก

การตรวจสอบสิทธิ์แบบพื้นฐานเป็นส่วนหนึ่งของ HTTP ที่กำหนดไว้ใน RFC 7617, ซึ่งมีมาตั้งแต่ยุคต้นๆของเว็บ มันเรียบง่ายแต่มีความปลอดภัยน้อยกว่าวิธีสมัยใหม่ ซึ่งทำให้ข้อมูลประจำตัวถูกส่งในทุกคำขอ (ถูกเข้ารหัสแบบ base64 ไม่ใช่การเข้ารหัส)

ทางเลือกอื่นๆ ได้แก่:

  • OAuth: มาตรฐานเปิดสำหรับการมอบสิทธิ์การเข้าถึง, ใช้เพื่ออนุญาตให้เว็บไซต์หรือแอพลิเคชันเข้าถึงข้อมูลของตนบนเว็บไซต์อื่นโดยไม่ต้องให้รหัสผ่าน
  • คีย์ API: ตัวระบุยูนิกเพื่อตรวจสอบสิทธิ์ผู้ใช้หรือโปรแกรมในคำขอ API
  • โทเค็นแบบ Bearer/JWT: โทเค็นความปลอดภัยที่มีข้อมูลผู้ใช้ทั้งหมดที่จำเป็นเพื่อตรวจสอบสิทธิ์ผู้ใช้

ในเชิงการปฏิบัติ, เมื่อใช้ HTTPoison, เรา:

  • เข้ารหัส Base64 ชื่อผู้ใช้และรหัสผ่าน;
  • รวมสตริงที่เข้ารหัสนี้ในส่วนหัว Authorization โดยเริ่มต้นด้วย “Basic “;
  • ส่งคำขอไปยังเซิฟเวอร์โดยหวังว่าจะได้รับการเข้าถึง

จำไว้, การตรวจสอบสิทธิ์พื้นฐานเป็นข้อความชัดเจนและสามารถถอดรหัสได้ง่าย มันปลอดภัยเฉพาะผ่าน HTTPS เท่านั้น

ดูเพิ่มเติม