2013-10-12 18 views
38

Tôi mới tham gia khái niệm về API của Restful.Xác thực cơ sở HTTP qua SSL cho REST API

Tôi đang thiết kế api an toàn cho cửa hàng trực tuyến.

Tôi chưa hiểu khái niệm xác thực http cơ bản trên ssl.

Điều đó có nghĩa là, đối với mọi yêu cầu, người dùng sẽ phải nhập lại tên người dùng và mật khẩu của họ?

Ai đó có thể vui lòng giải thích chi tiết cách hoạt động và cách sử dụng nó?

Xin cảm ơn trước.

Trả lời

60

xác thực cơ bản chỉ là một tiêu đề HTTP tiêu chuẩn với người dùng và thông qua mã hóa trong base64:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ ==

(http://en.wikipedia.org/wiki/Basic_access_authentication) .Nếu bạn xác thực phần còn lại cuộc gọi API của bạn bởi tiêu đề này trên một con ssl conection, vấn đề là bất kỳ người đàn ông ở giữa có thể giải mã tên người dùng và mật khẩu của bạn từ tiêu đề auth của bạn.

Để đảm bảo mật khẩu của bạn được gửi an toàn, thay vì kết nối HTTP bình thường, bạn phải sử dụng HTTPS. Sự khác biệt duy nhất giữa HTTP và HTTPS là HTTPS đang sử dụng giao thức bảo mật SSL/TSL qua TCP/IP thay vì TCP/IP đơn giản.

Hiện tại, điều này có nhược điểm là việc thiết lập kết nối HTTPS đắt hơn trên CPU so với kết nối HTTP bình thường. Rõ ràng là nếu bạn muốn xác thực các cuộc gọi còn lại trên mọi yêu cầu với tiêu đề này, bạn nên đặt API còn lại của mình chỉ khả dụng cho các kết nối HTTPS.

+1

Tiêu đề ủy quyền có được gửi cùng với mọi yêu cầu đi tới máy chủ không? –

+3

Có. Vì phần còn lại api không có trạng thái (ví dụ: trạng thái người dùng đã đăng nhập). Tôi nghĩ rằng đối với các ứng dụng lớn, bạn phải có một mô-đun xác thực hoặc bộ lọc có trạng thái. Hoặc một cái gì đó như OAuth. Tôi chắc chắn sẽ xem xét để cố gắng hiểu OAuth 2 ví dụ đó là một giải pháp hoàn chỉnh hơn và chung chung cho bất cứ ai sử dụng api của bạn. –

+0

Và tiêu đề sẽ tự động được lưu vào bộ nhớ cache và được gửi bởi trình duyệt của tôi một lần nữa và một lần nữa? Hoặc tôi sẽ cần phải gửi tiêu đề bằng mã api? –

Các vấn đề liên quan