Vì vậy, tôi đang cố gắng để thực hiện các tình huống sau:HTTP Spec: Cấp quyền proxy và Authorization header
- Đơn được bảo vệ bởi Basic Authentication. Giả sử nó được lưu trữ trên
app.com
- Một proxy HTTP, ở phía trước ứng dụng, cũng yêu cầu xác thực. Nó được lưu trữ trên
proxy.com
Do đó, người dùng phải cung cấp thông tin cho cả các proxy và các ứng dụng trong cùng một yêu cầu, do đó ông có khác nhau cặp username/password: một cặp để xác thực bản thân chống lại các ứng dụng, và tên người dùng khác/cặp mật khẩu để xác thực mình chống lại proxy.
Sau khi đọc thông số kỹ thuật, tôi không thực sự chắc chắn về cách thực hiện điều này. Điều tôi đang nghĩ là:
- Người dùng gửi yêu cầu HTTP tới proxy mà không cần bất kỳ loại xác thực nào.
- Proxy trả lời
407 Proxy Authentication Required
và trả về tiêu đềProxy-Authenticate
ở định dạng:"Proxy-Authenticate: Basic realm="proxy.com"
.
Câu hỏi: Đây có phải là tiêu đềProxy-Authenticate
được đặt chính xác không? - Khách hàng sau đó thử lại yêu cầu với tiêu đề
Proxy-Authorization
, đó là đại diện Base64 của proxyusername:password
. - Lần này proxy xác thực yêu cầu, nhưng sau đó ứng dụng trả lời với tiêu đề
401 Unauthorized
. Người dùng đã được xác thực bởi proxy, chứ không phải bởi ứng dụng. Ứng dụng này thêm tiêu đềWWW-Authenticate
vào phản hồi nhưWWW-Authenticate: Basic realm="app.com"
. Câu hỏi: giá trị tiêu đề này đúng không? - Máy khách thử lại yêu cầu với tiêu đề
Proxy-Authorization
và tiêu đềAuthorization
có giá trị với biểu diễn Base64 của ứng dụngusername:password
. - Tại thời điểm này, proxy xác thực thành công yêu cầu, chuyển tiếp yêu cầu đến ứng dụng xác thực người dùng. Và khách hàng cuối cùng cũng nhận được phản hồi.
Toàn bộ quy trình làm việc có chính xác không?
Vâng, cảm ơn vì đã có tiêu đề Proxy- * được giải thích ở đây, đang tìm kiếm chúng. Nhưng bạn đã giải quyết được vấn đề của mình chưa? Tại sao câu hỏi vẫn mở? –
Vì bạn vừa yêu cầu xác nhận chung về cách tiếp cận, tôi đã cố gắng thêm một số màu bổ sung trong câu trả lời của tôi xung quanh các hoán vị khác của thiết lập này. Tuy nhiên, nếu bạn đang đặt câu hỏi này bởi vì bạn đã thử những gì bạn đã mô tả và gặp lỗi cụ thể, vui lòng cập nhật câu hỏi để bao gồm lỗi đó; mặc dù tôi đã cố gắng hết sức để xác thực những gì bạn đã đăng, thử nghiệm thực sự sẽ đơn giản là thử và xem điều gì xảy ra. –