Giới hạn phạm vi thông tin xác thực proxy của RestTemplate với HttpClient 5
Giới hạn thông tin xác thực Apache HttpClient 5 cho máy chủ và cổng proxy trước khi cung cấp transport cho Spring 6 RestTemplate.
Đăng nhập proxy thuộc về nhà cung cấp thông tin xác thực của transport. Với Spring 6 và Apache HttpClient 5, hãy giới hạn tài khoản đó cho trung gian:
var proxy = new org.apache.hc.core5.http.HttpHost(
"http", "proxy.example", 8080);
var credentials = new org.apache.hc.client5.http.impl.auth
.BasicCredentialsProvider();
credentials.setCredentials(
new org.apache.hc.client5.http.auth.AuthScope(proxy),
new org.apache.hc.client5.http.auth.UsernamePasswordCredentials(
proxyUser, proxyPassword.toCharArray()));
var http = org.apache.hc.client5.http.impl.classic.HttpClients.custom()
.setProxy(proxy)
.setDefaultCredentialsProvider(credentials)
.build();
var factory = new org.springframework.http.client
.HttpComponentsClientHttpRequestFactory(http);
var rest = new org.springframework.web.client.RestTemplate(factory);Ứng dụng cung cấp các giá trị proxyUser và proxyPassword và sở hữu vòng đời của máy khách HTTP. Dùng lại rest cho khối lượng công việc thay vì tạo thêm một mẫu mặc định tại vị trí gọi.
AuthScope giới hạn nơi thông tin xác thực này có hiệu lực. Ví dụ cung cấp thông tin xác thực tên người dùng/mật khẩu thông thường; tên BasicCredentialsProvider không buộc mọi thử thách phải dùng lược đồ HTTP Basic.
Với đích HTTPS, transport có thể trả lời thử thách của proxy trong quá trình CONNECT, trước khi yêu cầu HTTP mã hóa của ứng dụng tồn tại. Một bộ chặn đích chung thêm Proxy-Authorization không tương đương với quá trình thương lượng đó.
Định cấu hình riêng mọi tài khoản đích. Nếu proxy vẫn từ chối yêu cầu, hãy giữ lược đồ xác thực mà nó công bố cùng máy chủ và cổng thực tế. Thông tin xác thực giới hạn cho một điểm cuối khác sẽ không khớp chỉ vì mật khẩu đúng.