Phân tích Proxy-Authorization trong forward proxy Go
Phân tích riêng Proxy-Authorization trong forward proxy Go đồng thời giữ nguyên header Authorization của nguồn gốc.
Trong forward proxy Go, r.BasicAuth đọc header Authorization, vốn thuộc về đăng nhập của trang web đích. Thông tin xác thực của chính proxy đến trong Proxy-Authorization.
Một adapter nhỏ có thể dùng lại bộ phân tích công khai mà không thay đổi yêu cầu gốc:
func proxyBasicAuth(r *http.Request) (string, string, bool) {
headers := make(http.Header)
headers.Set("Authorization", r.Header.Get("Proxy-Authorization"))
return (&http.Request{Header: headers}).BasicAuth()
}
Đoạn này dùng net/http. Nó trả về các giá trị đã phân tích và cờ thành công của việc phân tích; nó không xác thực tài khoản. Chuyển kết quả cho bộ kiểm tra thông tin xác thực mà proxy dự định.
Nếu xác thực thất bại, hãy trả về 407 với thử thách Proxy-Authenticate phù hợp và dừng xử lý yêu cầu đó. Xác thực trước khi mở kết nối đến đích hoặc chấp nhận đường hầm CONNECT.
Sau khi chấp nhận thông tin xác thực, hãy dùng header Proxy-Authorization của chính proxy trước khi chuyển tiếp thông thường. Giữ trường Authorization gốc cho nguồn gốc. Proxy cha thượng nguồn, nếu có, cần cách bố trí xác thực có chủ đích của riêng nó thay vì vô tình nhận thông tin xác thực của máy khách này.