Xác thực cơ bản HTTP - trải nghiệm trình duyệt web mong đợi là gì?


255

Khi một máy chủ cho phép truy cập thông qua Xác thực HTTP cơ bản, trải nghiệm dự kiến ​​sẽ có trong trình duyệt web là gì?

Bỏ qua trình duyệt web một lát, đây là cách tạo yêu cầu Xác thực cơ bản với curl:

curl -u myusername:mypassword http://somesite.com

Nhưng những gì về một trình duyệt web? Những gì tôi đã thấy trên một số trang web, là tôi truy cập URL và sau đó máy chủ trả về mã phản hồi 401. Trình duyệt sau đó sẽ hiển thị lời nhắc tên người dùng / mật khẩu.

Tuy nhiên, trên somesite.com, tôi hoàn toàn không nhận được lời nhắc ủy quyền, chỉ là một trang nói rằng tôi không được ủy quyền. Có phải somesite đã không thực hiện đúng quy trình công việc Auth cơ bản, hoặc tôi còn cần phải làm gì nữa không?


Bạn có chắc chắn sử dụng Basic Auth và không Digest?
b_erb

không chắc chắn về sự khác biệt, trừ khi bạn hỏi tôi có mã hóa cơ sở 64 không. nếu tôi đang làm điều đó theo lập trình thì sẽ làm được, nhưng curl làm điều đó cho tôi.
bpapa

Bạn có thể tìm hiểu xác thực nào được sử dụng từ tiêu đề phản hồi WWW-Xác thực (giá trị: Digest hoặc Basic).
Kniganapolke

2
Tôi nghĩ rằng câu hỏi này cần phải được đọc lại. Nhiều người được hỏi nghĩ rằng đó là một câu hỏi về curl hơn là trình duyệt.
LS

Bạn có nghĩa là "xác thực" khi bạn sử dụng thuật ngữ "ủy quyền"?
Tarun

Câu trả lời:


160

Để giúp mọi người tránh nhầm lẫn, tôi sẽ cải tổ câu hỏi thành hai phần.

Đầu tiên: "làm thế nào để thực hiện yêu cầu HTTP được xác thực bằng trình duyệt, sử dụng BASIC auth?" .

Trong trình duyệt, trước tiên bạn có thể thực hiện http cơ bản bằng cách đợi lời nhắc đến hoặc bằng cách chỉnh sửa URL nếu bạn làm theo định dạng này: http://myusername:mypassword@somesite.com

NB: lệnh curl được đề cập trong câu hỏi là hoàn toàn tốt, nếu bạn đã cài đặt một dòng lệnh và curl. ;)

Người giới thiệu:

Cũng theo trang hướng dẫn CURL https://curl.haxx.se/docs/manual.html

HTTP

  Curl also supports user and password in HTTP URLs, thus you can pick a file
  like:

      curl http://name:passwd@machine.domain/full/path/to/file

  or specify user and password separately like in

      curl -u name:passwd http://machine.domain/full/path/to/file

  HTTP offers many different methods of authentication and curl supports
  several: Basic, Digest, NTLM and Negotiate (SPNEGO). Without telling which
  method to use, curl defaults to Basic. You can also ask curl to pick the
  most secure ones out of the ones that the server accepts for the given URL,
  by using --anyauth.

  NOTE! According to the URL specification, HTTP URLs can not contain a user
  and password, so that style will not work when using curl via a proxy, even
  though curl allows it at other times. When using a proxy, you _must_ use
  the -u style for user and password.

Câu hỏi thứ hai và thực sự là "Tuy nhiên, trên somesite.com, tôi hoàn toàn không nhận được lời nhắc ủy quyền, chỉ là một trang nói rằng tôi không được ủy quyền. tôi cần phải làm gì nữa? "

Tài liệu curl cho biết -utùy chọn hỗ trợ nhiều phương thức xác thực, Basic là mặc định.


3
Câu hỏi là về curl, không phải là một trình duyệt.
Ray Baxter

26
Bạn có thể chưa đọc câu hỏi hoàn toàn, vì nó nói ngay dưới lệnh curl: "Tuy nhiên, ngay bây giờ tôi không có quyền truy cập vào curl (câu chuyện dài), và tôi muốn làm điều đó từ trình duyệt web, nếu có thể . " ;)
Nicocube

3
Tôi hoàn toàn đồng ý rằng curl hoạt động tốt, cá nhân tôi sử dụng nó một cách thường xuyên, nhưng câu hỏi không phải là về curl ...
Nicocube

4
Người hỏi muốn biết tại sao auth. không hoạt động trong trình duyệt. Câu hỏi không phải về cURL.
LS

68

Bạn đã thử chưa

curl somesite.com --user username:password

13
@daronwolff Bạn chỉ chuyển vị trí đối số và thay thế -u bằng --user (chỉ là dài hạn), nhưng ngoài việc bạn đã viết chính xác những gì OP đã viết trong câu hỏi của mình
Murmel

3
Người hỏi muốn biết tại sao auth. không hoạt động trong trình duyệt. Câu hỏi không phải về cURL.
LS

15

Bạn có thể có tên người dùng / mật khẩu không hợp lệ cũ được lưu trong trình duyệt của bạn. Hãy thử xóa chúng và kiểm tra lại.

Nếu bạn đang sử dụng IE và somesite.com nằm trong vùng bảo mật Intranet của bạn, IE có thể tự động gửi thông tin đăng nhập windows của bạn.


8

WWW-Xác thực tiêu đề

Bạn cũng có thể nhận được điều này nếu máy chủ đang gửi mã phản hồi 401 nhưng không đặt tiêu đề WWW-xác thực chính xác - Tôi nên biết, tôi đã sửa lỗi đó bằng mã riêng vì các ứng dụng VB không bật lên lời nhắc xác thực.


6

Nếu không có thông tin đăng nhập được cung cấp trong các tiêu đề yêu cầu, thì đây là phản hồi tối thiểu cần thiết cho IE để nhắc người dùng về thông tin đăng nhập và gửi lại yêu cầu.

Response.Clear();
Response.StatusCode = (Int32)HttpStatusCode.Unauthorized;
Response.AddHeader("WWW-Authenticate", "Basic");

5

Bạn có thể sử dụng Postman một plugin cho chrome. Nó cung cấp khả năng chọn loại xác thực bạn cần cho mỗi yêu cầu. Trong menu đó, bạn có thể cấu hình người dùng và mật khẩu. Người đưa thư sẽ tự động dịch cấu hình sang tiêu đề xác thực sẽ được gửi cùng với yêu cầu của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.