การพิสูจน์ตัวตน Basic ของพร็อกซีใน OkHttp: หยุดการลองใหม่ที่ถูกปฏิเสธ
ใช้ proxyAuthenticator ของ OkHttp สำหรับการท้าทายของพร็อกซี และหยุดทำซ้ำความพยายามอนุญาตที่ไม่เปลี่ยน
สำหรับพร็อกซี HTTP ที่ให้การพิสูจน์ตัวตนแบบ Basic นั้น proxyAuthenticator ของ OkHttp สามารถคืนคำขอที่พาข้อมูลรับรองได้ คืน null หลังจากความพยายามอนุญาตถูกปฏิเสธไปแล้ว แทนที่จะส่งคำตอบเดิมซ้ำอีกครั้ง:
.proxyAuthenticator { _, response ->
if (response.request.header("Proxy-Authorization") != null) {
null
} else {
response.request.newBuilder()
.header("Proxy-Authorization",
Credentials.basic(proxyUser, proxyPassword))
.build()
}
}
แบบร่างนี้ใช้ค่าบัญชีจากการกำหนดค่าลับของแอปพลิเคชัน ตัวป้องกันอนุญาตให้ลองครั้งแรกและหยุดการลองซ้ำ มันใช้งาน Basic ไม่ใช่ทุกสคีมที่พร็อกซีอาจประกาศ ตรวจสอบการท้าทายก่อนเลือกคำตอบนั้น
หากผลลัพธ์สุดท้ายยังคงเป็น 407 ให้เปรียบเทียบพร็อกซีที่เลือก สคีมที่ประกาศ และตัวตนบัญชีที่มีเอกสาร รหัสผ่านที่ถูกปฏิเสธ วิธีที่ไม่รองรับ และรูปแบบชื่อผู้ใช้ที่ไม่ถูกต้องต้องใช้การแก้ไขที่ต่างกัน เก็บข้อสังเกตเหล่านั้นและสถานะสุดท้ายไว้ในการวินิจฉัยที่ปิดบัง
CONNECT มีบริบทการเรียกกลับอีกแบบหนึ่ง OkHttp จัดทำเอกสารการท้าทายการพิสูจน์ตัวตนพร็อกซีแบบสังเคราะห์ล่วงหน้าก่อนเปิดอุโมงค์ จัดการบริบทนั้นตาม API แทนที่จะถือว่าทุกการเรียกกลับเป็นการตอบสนองปลายทางปกติ
authenticator ที่แยกต่างหากใช้สำหรับการพิสูจน์ตัวตนที่เซิร์ฟเวอร์ปลายทาง เก็บข้อมูลรับรองของมันแยกจากการเข้าสู่ระบบพร็อกซี ตัวดักจับทั่วไปที่ใส่รหัสผ่านพร็อกซีในทุกคำขอขาออกอาจส่งมันในขอบเขตที่ผิด
รายงานในอดีตยังอธิบายข้อบกพร่องในการใช้งาน รวมถึงการจัดการเนื้อหาคำตอบพร็อกซีที่ถูกปฏิเสธ บันทึกเวอร์ชัน OkHttp และการแลกเปลี่ยนสุดท้ายก่อนจะโยงความล้มเหลวปัจจุบันกับรายงานเก่า การตัดสินใจลองใหม่ยังคงควรหยุดความพยายามข้อมูลรับรองที่ไม่เปลี่ยนซึ่งไม่มีคำตอบใหม่ที่เป็นประโยชน์