การใช้ส่วนหัวการให้สิทธิ์ที่กำหนดเองใน REST API


10

ฉันกำลังสร้าง REST api ที่ซึ่งลูกค้าได้รับการรับรองความถูกต้องโดยใช้ใบรับรองลูกค้า ลูกค้าในกรณีนี้ไม่ใช่ผู้ใช้รายบุคคล แต่เป็นเลเยอร์การนำเสนอบางประเภท ผู้ใช้จะได้รับการรับรองความถูกต้องโดยใช้วิธีการที่กำหนดเองและเป็นความรับผิดชอบของเลเยอร์การนำเสนอเพื่อดูว่าสิ่งนี้ทำถูกต้องแล้ว (หมายเหตุ: ฉันรู้ว่านี่ไม่ใช่วิธีการที่เหมาะสม แต่ api นั้นไม่ใช่สาธารณะ)

ฉันต้องการส่งชื่อผู้ใช้สำหรับแต่ละคำขอ (ไม่ใช่รหัสผ่าน) แต่ฉันไม่แน่ใจว่าจะทำเช่นไร เป็นความคิดที่ดีที่จะใช้ส่วนหัวการให้อนุญาตหรือไม่

คำตอบ:


21

การใช้หัวข้อการให้สิทธิ์ดูเหมือนว่าเป็นสิ่งที่ถูกต้อง เป็นวัตถุประสงค์ทั้งหมดของส่วนหัวการให้สิทธิ์

จากhttp://tools.ietf.org/html/rfc7235#section-4.2 :

ฟิลด์ส่วนหัว "การอนุญาต" อนุญาตให้ตัวแทนผู้ใช้รับรองความถูกต้องตัวเองกับเซิร์ฟเวอร์ต้นทาง - ปกติ แต่ไม่จำเป็นว่าหลังจากได้รับการตอบสนอง 401 (ไม่ได้รับอนุญาต) ค่าประกอบด้วยข้อมูลรับรองที่มีข้อมูลการรับรองความถูกต้องของตัวแทนผู้ใช้สำหรับขอบเขตของทรัพยากรที่ต้องการ

หากคุณมีเอกสารรับรองความถูกต้องของคุณเอง แต่ไม่จำเป็นต้องบูรณาการล้อ


3
มันไม่ได้ดูเหมือนสิ่งที่ถูกต้อง แต่เป็นสิ่งที่ถูกต้อง (ฉันค้นคว้ามาตลอดทั้งวัน) ส่วนที่ 4.1 ใน RFC 7235แสดงให้เห็นถึงการใช้รูปแบบที่กำหนดเอง "Newauth" ใน "ตัวอย่าง" พร้อมกับรูปแบบมาตรฐาน "พื้นฐาน" ที่อนุญาตให้ลูกค้าใช้ตัวเลือกของทั้งสองรูปแบบ . ที่กล่าวว่าหากคุณใช้รูปแบบ "มาตรฐาน" คุณควรใช้อย่างถูกต้อง คำตอบซัคเป็นที่ถูกต้องและฆาเป็นที่ไม่ถูกต้อง
สตีเฟ่น P

3

ฉันจะไม่แนะนำให้คุณใช้ส่วนหัว HTTP มาตรฐานที่ไม่เป็นมาตรฐาน ส่วนใหญ่เป็นเพราะมันอาจทำให้เข้าใจผิดกับนักพัฒนาอื่น ๆ ที่รู้ว่าAuthoriziationส่วนหัวมีความหมายว่าจะใช้ในการตรวจสอบ HTTP แต่ยังเพื่อหลีกเลี่ยงปัญหาที่อาจเกิดขึ้นกับส่วนอื่น ๆ ของสแต็คของคุณมีการรับรู้ที่ขัดแย้งกัน

ไม่ว่าในกรณีใดจะไม่มีสิ่งใดขัดขวางคุณให้ใช้X-Authorization-Userส่วนหัวที่กำหนดเองและไม่ได้มาตรฐานโดยเฉพาะสำหรับวัตถุประสงค์ของคุณ


ตกลง 100% หากคุณต้องการทำสิ่งที่กำหนดเองนั่นคือสิ่งที่X-ส่วนหัวที่ขึ้นต้นด้วย หากคุณจะใช้ส่วนหัวมาตรฐานอย่าใช้เพื่อสิ่งที่ผิดปกติหรือไม่คาดคิด
Carson63000

2
แค่คิดว่าฉันควรพูดถึงว่า "X-" ถูกคัดค้านแล้ว: stackoverflow.com/questions/3561381/…
Matsen75

ตามคำตอบนี้หมายความว่า Amazon S3 ผิดหรือเปล่า? docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
Tom Lianza

4
-1 ตามที่ Zach Dennis พูดถึงไม่เหมือนกับส่วนหัว HTTP อื่น ๆ ส่วนหัวการให้สิทธิ์ได้รับการออกแบบให้ขยายและมีวิธีที่ระบุไว้อย่างชัดเจนเกี่ยวกับวิธีกำหนดโครงร่างการให้สิทธิ์ของคุณเอง ในเปลือกถั่วเพียงให้แน่ใจว่าคุณใช้ชื่อรูปแบบการอนุมัติที่กำหนดเอง
Lie Ryan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.