2010-11-24 39 views
25

Tôi đang cố truy cập một trang web được bảo vệ bằng mật khẩu. Nó không được sử dụng xác thực cơ bản (mặc dù cùng một người dùng/pass hộp bật lên trong firefox) như tiêu đề phản ứng là WWW-Authenticate: Negotiate.Sự cố xác thực với WWW-Xác thực: Thương lượng

Tôi muốn tự động hóa quy trình đăng nhập bằng cách gửi tiêu đề chính xác.

Trong cơ bản bạn sẽ sử dụng một cái gì đó như:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== 

Tôi sẽ sử dụng gì để đàm phán?

+1

WWW-Authenticate: Tiêu đề thương lượng có nghĩa là máy chủ có thể sử dụng NTLM hoặc Kerberos (ít nhất là trên OS trước Windows 7 và Win 2008 Server khi thêm các nhà cung cấp hỗ trợ bảo mật) để xác thực và mã hóa. Trong trường hợp này của NTLM, việc thương lượng đòi hỏi nhiều thông điệp (thử thách/phản hồi) phải được trao đổi trước khi phiên bảo mật được thiết lập, do đó không có "tiêu đề chính xác" được gửi từ đầu. Bạn có thể tìm thấy chi tiết về vấn đề của mình http://msdn.microsoft.com/en-us/library/aa378748%28VS.85%29.aspx (Gói SSP do Microsoft cung cấp). –

Trả lời

24

Máy chủ web nhắc bạn về mã thông báo SPNEGO (Cơ chế thương lượng GSSAPI đơn giản và được bảo vệ).

Đây là một phát minh của Microsoft cho việc đàm phán một loại xác thực để sử dụng cho Web SSO (single-sign-on):

  • hoặc NTLM
  • hoặc Kerberos.

Xem:

+2

Trong một trong các ứng dụng tôi đang làm việc, máy chủ ADFS đang phản hồi với hai trường tiêu đề WWW-Authenticate trong phản hồi với các giá trị WWW-Authenticate: Negotiate WWW-Authenticate: NTLM Tiêu đề đầu tiên với "Negotiate" nghĩa là? Từ fiddler làm thế nào có thể tìm ra những gì giao thức xác thực cuối cùng được sử dụng? –

+0

Cách nhận xét quá cũ. Trả lời cho người đọc trong tương lai. Bạn có thể kiểm tra công cụ tìm kiếm để xác minh cơ chế xác thực nào đang được sử dụng. Tôi nghĩ rằng máy chủ của bạn được bật với cả xác thực Kerberos và NTLM. Từ fiddler, bạn có thể dễ dàng xác minh xác thực nào đang được sử dụng. Kiểm tra tiêu đề trên phản hồi trình duyệt của bạn với thử thách 401 (là tiêu đề yêu cầu). Nếu có chứa Ủy quyền: NTLM + mã thông báo thì đó là xác thực NTLM. Trong trường hợp ủy quyền: Thương lượng + mã thông báo, nó phải là kerberos. Lưu ý NTLM có nhiều hơn một thách thức 401. – Charith

28

Đưa thông tin này ở đây vì lợi ích độc giả tương lai.

  • 401 (Unauthorized) response header -> Yêu cầu xác thực tiêu đề

  • Dưới đây là một vài WWW-Authenticate response headers. (Danh sách đầy đủ là tại IANA: HTTP Authentication Schemes.)

    • WWW-Authenticate: Basic -> Authorization: Basic + thẻ - Sử dụng để xác thực cơ bản
    • WWW-Authenticate: NTLM -> Authorization: NTLM + token (2 thử thách)
    • WWW-Authenticate: Negotiate - > Ủy quyền: Thương lượng + mã thông báo - được sử dụng để xác thực Kerberos
      • Nhân tiện: IANA có angry remark about Negotiate: Lược đồ xác thực này vi phạm cả ngữ nghĩa HTTP (là kết nối định hướng) và cú pháp (sử dụng cú pháp không tương thích với cú pháp trường tiêu đề WWW-Authenticate và Authorization).

Bạn có thể thiết lập các tiêu đề Authorization: Basic chỉ khi bạn cũng có WWW-Authenticate: Basic tiêu đề trên 401 thách thức của bạn.

Nhưng kể từ khi bạn có WWW-Authenticate: Negotiate, đây là trường hợp xác thực dựa trên Kerberos.

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