Làm cách nào để bạn xác định liệu một dịch vụ web REST có đang sử dụng Basic, Kerberos, NTLM hay một trong nhiều phương pháp xác thực khác không?xác định phương pháp xác thực http web
Trả lời
Khi bạn gửi một yêu cầu không được thẩm định dịch vụ đó có đáp ứng với một "HTTP/1.1 401 Unauthorized" và phản ứng có chứa một tiêu đề WWW-Authenticate
mà xác định những gì cơ chế thẩm định dự kiến (Basic
, Digest
), lĩnh vực an ninh và bất kỳ khác giá trị cụ thể (như nonce của Digets). Vì vậy, nếu máy chủ phản hồi với:
HTTP/1.0 401 Unauthorized
WWW-Authenticate: Digest realm="example.com",
qop="auth,auth-int",
nonce="...",
opaque="..."
nó muốn xác thực thông báo. Nếu phản hồi có dạng:
HTTP/1.0 401 Unauthorized
WWW-Authenticate: Basic realm="example.com"
thì nó muốn xác thực cơ bản. Một số máy chủ/trang web được triển khai không đúng cách không xử lý chính xác Cơ bản và trả lời trực tiếp với 403 Cấm thay vì thử thách trước.
NTLM tương tự như máy chủ phản hồi với tiêu đề 401 và WWW-Authenticate với giá trị NTLM
, nhưng không có thông số công khai chính thức cho nó, vì nó là độc quyền của Microsoft. Có nhiều mô tả reverseengineered khác nhau.
Thật không may REST không đi kèm với mô tả dịch vụ kiểu WSDL để khám phá lược đồ xác thực được sử dụng a priori.
Nếu đó là kịch bản hộp đen, tôi thường kết nối với Fiddler và kiểm tra lưu lượng truy cập thực tế.
Bạn gửi yêu cầu, có thể nhận mã HTTP 401 và xem tiêu đề WWW-Authenticate
(mỗi RFC 2616) phản hồi MUST
bao gồm. Thay vào đó, nếu bạn nhận được trạng thái lạ 403 hoặc một số trạng thái lạ khác hoặc thiếu tiêu đề WWW-Authenticate
, bạn sẽ nguyền rủa tại các tác giả trang web không theo dõi HTTP RFC cốt lõi và bắt đầu thu hút lưu lượng truy cập. thời gian này ;-).
Tôi muốn tôi có thể chọn hai câu trả lời hợp lệ, vấn đề là dịch vụ REST không trả về tiêu đề WWW-Authenticate vì vậy tôi phải thêm tiêu đề bằng mã theo cách thủ công từ: http://devproj20.blogspot.com/ 2008/02/assigning-basic-authorization-http.html – Seph
@Seph, vâng, số lượng trang web bị hỏng trên web đáng kinh ngạc phải không? Không có vấn đề làm thế nào rõ ràng một RFC là (và nó không nhận được nhiều rõ ràng hơn 'MUST' ;-) có _always_ rất nhiều" lập trình viên "(HA!) Người nghĩ rằng họ quá đặc biệt để phải đọc, hoặc tuân theo tài liệu nhàm chán ... :-( –
- 1. phương pháp xác định 'link_to'
- 2. Xác định phương pháp chung
- 3. phương pháp xác định 'use_transactional_fixtures
- 4. phương pháp xác định 'find_or_create'
- 5. NoMethodError: phương pháp không xác định `has_attached_file '
- 6. không xác định phương pháp 'stringify_keys'
- 7. Xác thực HTTP REST - Cách thực hiện?
- 8. Rails 3: Phương pháp xác định 'remote_form_for'
- 9. will_paginate phương pháp không xác định `total_pages '
- 10. Gọi phương pháp xác định CI_Controller :: Controller()
- 11. AngularJS $ http xác định
- 12. Xác thực HTTP trong iPhone
- 13. Kỹ thuật đảo ngược: Làm cách nào để xác định phương pháp nén không xác định?
- 14. Xác thực không thành sử dụng phương pháp mysql_native_password
- 15. NoMethodError không xác định phương pháp mail cho
- 16. Xác thực jQuery - Ghi đè phương thức xác thực lõi
- 17. Xác thực MAC HTTP bằng C#
- 18. Proxy xác thực HTTP với Java
- 19. Xác định dịch vụ/phương pháp đích từ CXF Interceptor
- 20. Http 1.1 xác thực giao thức
- 21. Tại sao 'được xác định() || xác định 'cú pháp trong việc xác định một hằng số
- 22. Zeus + FactoryGirl :: Cú pháp :: Phương pháp. Phương pháp xác định 'tạo ra'
- 23. Cách xác định phương pháp nén của tệp ZIP/RAR
- 24. Ruby - Sử dụng class_eval để xác định phương pháp
- 25. Gửi Tiêu đề HTTP với Yêu cầu Web HTTP để Xác thực NTLM
- 26. bỏ qua phương pháp xác nhận nhất định trong mẫu
- 27. Play Framework + Eclipse: phương pháp không xác định cho ReverseApplication
- 28. Khi nào tôi xác định các phương pháp target-c?
- 29. twitter bootstrap typeahead (phương pháp 'toLowerCase' không xác định)
- 30. Thử nghiệm đơn vị VS2008 - phương pháp xác thực thoát
vấn đề là dịch vụ REST không quay trở lại với bất kỳ tiêu đề WWW-Authenticate nào trong 401 vì vậy tôi phải chỉ định thủ công tiêu đề – Seph
Tôi chỉ cần 1 xu cho mỗi trang web làm điều đó (không xử lý Cơ bản với thử thách chính xác) và tôi có thể nghỉ hưu ... –