การเข้าสู่พร็อกซีเป็นของผู้ให้บริการข้อมูลรับรองของทรานสปอร์ต สำหรับ Spring 6 กับ Apache HttpClient 5 ให้จำกัดบัญชีนั้นไว้ที่ตัวกลาง:

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);

แอปพลิเคชันจัดหาค่า proxyUser และ proxyPassword และเป็นเจ้าของวงจรชีวิตของไคลเอนต์ HTTP ใช้ rest ซ้ำสำหรับภาระงานแทนการสร้างเทมเพลตเริ่มต้นอีกตัวที่จุดเรียกใช้

AuthScope จำกัดว่าข้อมูลรับรองนี้ใช้ได้ที่ใด ตัวอย่างจัดหาข้อมูลรับรองชื่อผู้ใช้/รหัสผ่านแบบธรรมดา ชื่อ BasicCredentialsProvider ไม่ได้บังคับให้ทุกการท้าทายใช้สคีมา HTTP Basic

เมื่อปลายทางเป็น HTTPS ทรานสปอร์ตสามารถตอบการท้าทายของพร็อกซีระหว่าง CONNECT ก่อนที่คำขอ HTTP ที่เข้ารหัสของแอปพลิเคชันจะมีอยู่ อินเทอร์เซปเตอร์ปลายทางทั่วไปที่เพิ่ม Proxy-Authorization ไม่เทียบเท่ากับการเจรจานั้น

กำหนดค่าบัญชีปลายทางใด ๆ แยกต่างหาก หากพร็อกซียังปฏิเสธคำขอ ให้เก็บสคีมาการรับรองที่ประกาศไว้กับโฮสต์และพอร์ตจริง ข้อมูลรับรองที่จำกัดไว้สำหรับปลายทางอื่นจะไม่ตรงกันเพียงเพราะรหัสผ่านถูกต้อง

บทความที่เกี่ยวข้อง