2011-11-14 17 views
10

Tôi có một điểm cuối API https://www.example.com/api/authentication lấy tên người dùng và mật khẩu làm đầu vào và trả về mã thông báo xác thực.Tại sao tôi nên sử dụng xác thực cơ sở HTTP thay vì thông số đăng nhập tên người dùng và mật khẩu?

Về đi qua tên truy cập và mật khẩu, tôi có hai lựa chọn (ít nhất), cụ thể là:

  1. HTTP Basic Authentication (mà qua thông tin như là một phần của tiêu đề HTTP)
  2. thông số HTTP POST

Tôi hiểu rằng cả hai phương pháp đều không cung cấp mã hóa (do đó việc sử dụng HTTPS/SSL). Tôi cũng hiểu tại sao sử dụng HTTP GET là một ý tưởng tồi.

Có sự khác biệt thực sự nào (ngoài việc xác thực cơ bản cảm thấy thành ngữ hơn) giữa hai phương pháp?

+0

Tôi không nghĩ có bất kỳ sự khác biệt (thực) nào, câu hỏi hay mặc dù – inspite

Trả lời

5

Sự khác biệt là xác thực cơ bản là một lược đồ thách thức/phản hồi được xác định rõ ràng mà tất cả các trình duyệt đều hiểu và đó là máy chủ khởi động nó bằng cách nói với khách hàng rằng nó yêu cầu xác thực (cơ bản) cho một lĩnh vực. Điều này kích hoạt trình duyệt để hiển thị cửa sổ bật lên cho người dùng nhập tên/mật khẩu mà sau đó nó chuyển vào tiêu đề như bạn mô tả.

Trong ví dụ thứ hai của bạn, bạn phải làm tất cả những gì theo cách tùy chỉnh của riêng bạn và tạo biểu mẫu đăng nhập của riêng bạn cho người dùng (v.v).

Nếu bạn khấu trừ quy trình này sang bước duy nhất để chuyển tên người dùng/mật khẩu từ máy khách đến máy chủ, tôi phải đồng ý rằng không có nhiều khác biệt nhưng xác thực cơ bản ngụ ý nhiều hơn một chút.

+0

Tôi đã không cân nhắc điều này vì tôi đang xử lý các khách hàng không phải trình duyệt. Câu trả lời tuyệt vời. – Frank

+2

Hãy coi chừng: Vấn đề rất quan trọng là rất khó để có được trình duyệt đăng xuất khi người dùng đã xác thực đúng cách. Trên một số trình duyệt, bạn cần đóng mọi phiên bản trình duyệt. IE có một phương tiện thích hợp để đăng xuất: http://stackoverflow.com/questions/31326/is-there-a-browser-equivalent-to-ies-clearauthenticationcache/8497804#8497804 nhưng các trình duyệt khác thì không. – AnthonyVO

1

Triển khai xác thực HTTP cơ bản là kỹ thuật đơn giản nhất để thực thi kiểm soát truy cập vào tài nguyên web vì không yêu cầu cookie, số nhận dạng phiên hoặc trang đăng nhập; thay vào đó, xác thực HTTP Basic sử dụng các trường chuẩn trong tiêu đề HTTP, tránh sự cần thiết phải bắt tay.