Takrorlangan 407 har doim Java noto‘g‘ri parol yuborganini anglatmaydi. JDKning namunaviy amalga oshirilishi odatda HTTPS CONNECT tunnellari uchun Basic autentifikatsiyasini o‘chiradi. Faqat Basic taklif qiladigan proksi autentifikatsiya callback funksiyangiz kirish ma’lumotlarini taqdim etishidan oldin rad qilinishi mumkin.

Kirish ma’lumotlari callback funksiyasining doirasini cheklang

Java HTTP mijoziga Authenticator biriktiring va uni sozlangan proksi bilan cheklang:

String proxyHost = "203.0.113.10";
int proxyPort = 8080;
String password = System.getenv("PROXY_PASSWORD");
if (password == null) {
    throw new IllegalStateException("Set PROXY_PASSWORD");
}

java.net.Authenticator auth = new java.net.Authenticator() {
    @Override
    protected java.net.PasswordAuthentication getPasswordAuthentication() {
        if (getRequestorType() == RequestorType.PROXY
                && proxyHost.equals(getRequestingHost())
                && proxyPort == getRequestingPort()) {
            return new java.net.PasswordAuthentication(
                "proxy-user", password.toCharArray());
        }
        return null;
    }
};

java.net.http.HttpClient client = java.net.http.HttpClient.newBuilder()
    .proxy(java.net.ProxySelector.of(
        new java.net.InetSocketAddress(proxyHost, proxyPort)))
    .authenticator(auth)
    .connectTimeout(java.time.Duration.ofSeconds(5))
    .build();

Bu bitta mijozni sozlash kodi, global standart autentifikator emas. Hujjatlashtirish manzilini almashtiring va aynan shu xizmat uchun berilgan haqiqiy kirish ma’lumotlaridan foydalaning. So‘rovchi turi va oxirgi nuqta tekshiruvlari ayni callback veb-saytning autentifikatsiya talabiga proksi hisobini o‘ylamasdan taklif qilishining oldini oladi.

Qaysi autentifikatsiya bosqichi ishlamayotganini tekshiring

JDKda oddiy HTTP proksilash va CONNECT tunnellash uchun o‘chirilgan sxemalarning alohida sozlamalari bor. Tegishli nomlar jdk.http.auth.proxying.disabledSchemes va jdk.http.auth.tunneling.disabledSchemes.

Bu HTTP trafigi autentifikatsiyadan o‘ta olsa-da, shu proksi orqali HTTPS tunneli nega ishlamasligini tushuntiradi. Boshqa kompyuterda ham bir xil amaldagi standartlar bor deb taxmin qilish o‘rniga, bajarilish muhitining conf/net.properties faylini va joylashtirish siyosatini tekshiring.

O‘chirilgan sxemalar ro‘yxatini global bo‘shatish umumiy proksi tuzatishi emas. Shifrlanmagan HTTP proksiga yuborilgan Basic kirish ma’lumotlarini manzil bilan keyinroq tuziladigan TLS ulanishi himoya qilmaydi. O‘zgarishni tasdiqlashdan oldin proksi transportini, autentifikatsiya usulini va joylashtirish siyosatini ko‘rib chiqing.

JDKning hujjatlashtirilgan ichki autentifikatsiya xatti-harakati ham proksi e’lon qiladigan har bir sxemani qo‘llash va’dasi emas. Qo‘lda berilgan Authorization yoki Proxy-Authorization sarlavhasi avtomatik autentifikator oqimini o‘zgartiradi; callback namunadan boshqacha ishlasa, maxsus sarlavhalarni tekshiring.

O'xshash maqolalar