วิธีที่ดีที่สุดในการปรับใช้การรับรองความถูกต้องสำหรับ REST API


21

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

อย่างใดอย่างหนึ่งสร้างโทเค็นด้วยอัลกอริทึมเฉพาะแล้วส่งแทนชื่อผู้ใช้และรหัสผ่านเพื่อเข้าถึง

ฉันควรนำไปใช้อย่างไร ฉันควรส่งโทเค็นนี้พร้อมกับคำขออื่นนอกเหนือจากการเข้าสู่ระบบหรือไม่


11
นั่นคือการตรวจสอบไม่อนุมัติ Authentication = พิสูจน์ว่าคุณคือคนที่คุณพูด การอนุญาต = พิสูจน์ว่าคุณได้รับอนุญาตให้ทำสิ่งที่คุณร้องขอ
tdammers

ฉันแค่เพิ่มความคิดเห็นแบบเดียวกันกับคำตอบ! +1 ถึงคุณ @ ผู้ส่งอีเมลฉันได้แก้ไขเนื้อหาทั้งหมดเพื่อให้การอนุมัติ
Google

คำตอบ:


14

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

ยกตัวอย่างเช่นการร้องขอ REST การตรวจสอบโดยใช้ HMAC ในวิธีนี้ลูกค้าจะมีประชาชนและกุญแจลับ สำหรับคำขอทั้งหมดที่ต้องการการรับรองความถูกต้องคุณควรเพิ่มรหัสpubliсและใช้รหัสลับเพื่อคำนวณแฮชของคำขอของคุณ

var myRequest = "https://myserver/resource?publicId=12345&param=value";
var requestHash = hmac_implementation(myRequest);
myRequest = myRequest + '&hmac=' + requestHash;

ตอนนี้เซิร์ฟเวอร์สามารถระบุคำขอด้วยกุญแจสาธารณะและคำนวณคำขอแฮชเอง หากแฮชทั้งสองเท่ากันผู้ใช้จะได้รับอนุญาต

แต่คุณต้องใช้ https เพื่อความปลอดภัยในการสื่อสารผ่านเครือข่ายคอมพิวเตอร์ซึ่งจะลดปัญหาที่อาจเกิดขึ้นได้อย่างมาก


9

oAuth เป็นมาตรฐานสำหรับสิ่งนี้ แต่มีวิธีแก้ไขเพิ่มเติม

อย่าพยายามใช้การรักษาความปลอดภัยโทเค็นและอื่น ๆ ทั้งหมดด้วยตัวเองเพราะเป็นหัวข้อที่ยากและเสี่ยง ลองดูตัวอย่างที่นี่:

/programming/4574868/securing-my-rest-api-with-oauth-while-still-allowing-authentication-via-third-pa

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.