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

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

วิธีการทำ:

คุณจะต้องใช้แพ็คเกจ http-conduit สำหรับการทำงานกับ HTTP และ base64-bytestring สำหรับการเข้ารหัสข้อมูลรับรอง นำเข้ามาและใช้ applyBasicAuth เพื่อเพิ่มข้อมูลรับรองลงในคำขอของคุณ

import Network.HTTP.Simple
import Data.ByteString.Char8 (pack)
import Data.ByteString.Base64 (encode)

-- สร้างส่วนหัวการรับรองความถูกต้องแบบพื้นฐาน
let username = "user"
let password = "pass"
let auth = encode $ pack (username ++ ":" ++ password)

-- สร้างคำขอของคุณ
request' = parseRequest_ "GET http://example.com/secret"
let request = setRequestHeader "Authorization" ["Basic " <> auth] request'

-- ดำเนินการคำขอ
response <- httpLBS request

-- จัดการกับการตอบกลับ
print $ getResponseBody response

นี่จะแสดงผลการตอบกลับจาก API หากข้อมูลรับรองของคุณถูกต้อง

การศึกษาอย่างลึกซึ้ง

การรับรองความถูกต้องแบบพื้นฐานนั้นเก่าแก่ในโลกเว็บ ถูกออกแบบในยุค 90 และมันง่ายมาก ๆ: username:password ที่ถูกเข้ารหัสด้วย base64 และส่งในส่วนหัว มันขาดคุณสมบัติที่ทันสมัย เช่น เวลาหมดอายุของโทเค็น และเนื่องจากไม่ได้เข้ารหัส จึงควรถูกใช้งานผ่าน HTTPS เท่านั้น

ทางเลือกอย่าง OAuth ให้การควบคุมที่มีความปลอดภัยและแยบยลมากขึ้น สำหรับ Haskell แล้ว ไลบรารีเช่น http-client และ wreq ให้ตัวเลือกและความยืดหยุ่นมากขึ้น

ในแง่ของการทำให้ใช้งานได้จริง จำไว้ว่าอย่าเขียนข้อมูลรับรองแบบฝังตรง! ใช้ตัวแปรแวดล้อมหรือตู้นิรภัยที่ปลอดภัยในการผลิต และเนื่องจากการเข้ารหัส base64 ไม่ใช่การเข้ารหัส (ใครก็สามารถถอดรหัสได้) การใช้ HTTPS จึงไม่เพียงแต่เป็นความคิดที่ดีเท่านั้น แต่เป็นสิ่งที่จำเป็น

ดูเพิ่มเติม