Bash:
การส่งคำขอ HTTP ด้วยการตรวจสอบสิทธิ์พื้นฐาน
วิธีการ:
มาลงมือทำกับโค้ดบ้าง วิธีนี้จะใช้ curl
เครื่องมือบรรทัดคำสั่งที่พบบ่อย ให้แทนที่ username:password
ด้วยข้อมูลประจำตัวของคุณ และ http://example.com/resource
ด้วย URL เป้าหมายของคุณ
curl -u username:password http://example.com/resource
หรือนำข้อมูลประจำตัวไปเข้ารหัสใน base64 ล่วงหน้าแล้วใช้งานดังนี้:
# เข้ารหัสข้อมูลประจำตัว
credentials=$(echo -n username:password | base64)
# ส่งคำขอ
curl -H "Authorization: Basic $credentials" http://example.com/resource
ตัวอย่างผลลัพธ์สำหรับคำขอที่สำเร็จอาจจะดูเหมือนนี้:
{
"data": "ข้อมูลที่ถูกจำกัด",
"message": "อนุญาตให้เข้าถึง"
}
ลงลึกมากขึ้น
โดยประวัติศาสตร์แล้ว การพิสูจน์ตัวตนแบบพื้นฐานได้เป็นส่วนหนึ่งของ HTTP ตั้งแต่วันแรกๆ แต่ไม่ได้หมายความว่าจะไม่มีข้อบกพร่อง - ประการสำคัญคือความเปราะบางถ้าไม่ได้ใช้ผ่านช่องทางที่ปลอดภัย เช่น HTTPS
ตัวเลือกอื่น ๆ ได้แก่ OAuth ซึ่งปลอดภัยกว่าและให้การควบคุมที่ละเอียดกว่าเกี่ยวกับสิ่งที่ถูกเข้าถึง Digest authentication อีกตัวเลือกหนึ่ง ซึ่งส่งข้อมูลประจำตัวที่ถูกแฮชแทนที่จะเป็นข้อความธรรมดา
สำหรับกลไก ตอนคุณส่งข้อมูลประจำตัวแบบ basic auth พวกมันจะถูกรวมไว้ในหัวข้อ HTTP โดยถูกเข้ารหัสใน Base64 ไม่ใช่การเข้ารหัส ดังนั้นหากคุณไม่ได้ใช้ HTTPS ใครก็ตามที่ดักฟังคำขอสามารถถอดรหัสได้อย่างง่ายดาย การใช้ HTTPS ช่วยปลอดภัยต่อการส่งข้อมูล โดยเข้ารหัสทุกอย่างระหว่างไคลเอ็นต์และเซิร์ฟเวอร์
ดูเพิ่มเติม
- เอกสารอย่างเป็นทางการของ cURL: https://curl.haxx.se/docs/manpage.html
- HTTP Authentication: Basic and Digest Access Authentication (IETF RFC 7617): https://tools.ietf.org/html/rfc7617
- บทนำสู่ OAuth: https://oauth.net/2/introduction/