407 ທີ່ເກີດຊ້ຳບໍ່ໄດ້ໝາຍຄວາມສະເໝີວ່າ Java ສົ່ງລະຫັດຜ່ານຜິດ. ການຕິດຕັ້ງອ້າງອີງຂອງ JDK ປົກກະຕິຈະປິດການຢືນຢັນຕົວຕົນ Basic ສຳລັບອຸໂມງ HTTPS CONNECT. ພຣັອກຊີທີ່ສະເໜີ Basic ເທົ່ານັ້ນອາດຖືກປະຕິເສດກ່ອນ callback ຢືນຢັນຕົວຕົນຂອງທ່ານຈະໃຫ້ຂໍ້ມູນເຂົ້າລະບົບ.

ຈຳກັດຂອບເຂດຂອງ callback ຂໍ້ມູນເຂົ້າລະບົບ

ເຊື່ອມ Authenticator ເຂົ້າກັບ ໄຄລເອັນ HTTP ຂອງ Java ແລະຈຳກັດໃຫ້ໃຊ້ສະເພາະພຣັອກຊີທີ່ຕັ້ງຄ່າໄວ້:

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

ນີ້ແມ່ນໂຄດຕັ້ງຄ່າສຳລັບໄຄລເອັນໜຶ່ງ ບໍ່ແມ່ນຕົວຢືນຢັນຕົວຕົນເລີ່ມຕົ້ນທົ່ວລະບົບ. ປ່ຽນທີ່ຢູ່ຕົວຢ່າງໃນເອກະສານ ແລະໃຊ້ຂໍ້ມູນເຂົ້າລະບົບທີ່ໄດ້ຮັບແທ້ສຳລັບບໍລິການນັ້ນ. ການກວດປະເພດຜູ້ຮ້ອງຂໍ ແລະຈຸດປາຍທາງ ປ້ອງກັນ callback ດຽວກັນຈາກການໃຫ້ບັນຊີພຣັອກຊີໂດຍບໍ່ລະວັງ ເມື່ອເວັບໄຊຮ້ອງຂໍການຢືນຢັນຕົວຕົນ.

ກວດວ່າຂັ້ນຕອນຢືນຢັນຕົວຕົນໃດລົ້ມເຫຼວ

JDK ມີການຕັ້ງຄ່າຮູບແບບຢືນຢັນຕົວຕົນທີ່ຖືກປິດແຍກກັນ ສຳລັບ HTTP ປົກກະຕິຜ່ານພຣັອກຊີ ແລະອຸໂມງ CONNECT. ຊື່ທີ່ກ່ຽວຂ້ອງແມ່ນ jdk.http.auth.proxying.disabledSchemes ແລະ jdk.http.auth.tunneling.disabledSchemes.

ນີ້ອະທິບາຍວ່າເປັນຫຍັງການຈະລາຈອນ HTTP ຈຶ່ງຢືນຢັນຕົວຕົນໄດ້ ແຕ່ອຸໂມງ HTTPS ຜ່ານພຣັອກຊີດຽວກັນລົ້ມເຫຼວ. ກວດ conf/net.properties ຂອງສະພາບແວດລ້ອມລັນ ແລະນະໂຍບາຍນຳໃຊ້ ແທນການສົມມຸດວ່າເຄື່ອງອື່ນມີຄ່າເລີ່ມຕົ້ນທີ່ໃຊ້ຈິງຄືກັນ.

ການລ້າງລາຍຊື່ຮູບແບບທີ່ປິດໃຫ້ວ່າງທົ່ວລະບົບບໍ່ແມ່ນວິທີແກ້ພຣັອກຊີທົ່ວໄປ. ຂໍ້ມູນ Basic ທີ່ສົ່ງໃຫ້ພຣັອກຊີ HTTP ແບບບໍ່ເຂົ້າລະຫັດ ບໍ່ໄດ້ຮັບການປົກປ້ອງໂດຍການເຊື່ອມຕໍ່ TLS ກັບປາຍທາງທີ່ສ້າງພາຍຫຼັງ. ທົບທວນ ການຂົນສົ່ງຂອງພຣັອກຊີ, ວິທີຢືນຢັນຕົວຕົນ ແລະນະໂຍບາຍນຳໃຊ້ກ່ອນອະນຸມັດການປ່ຽນແປງ.

ພຶດຕິກຳຢືນຢັນຕົວຕົນພາຍໃນ JDK ທີ່ລະບຸໃນເອກະສານກໍບໍ່ແມ່ນຄຳສັນຍາວ່າຈະຮອງຮັບທຸກຮູບແບບທີ່ພຣັອກຊີປະກາດ. ຫົວຂໍ້ Authorization ຫຼື Proxy-Authorization ທີ່ໃຫ້ດ້ວຍມືຈະປ່ຽນຂັ້ນຕອນຂອງຕົວຢືນຢັນອັດຕະໂນມັດ, ດັ່ງນັ້ນໃຫ້ກວດຫົວຂໍ້ທີ່ກຳນົດເອງເມື່ອ callback ເຮັດວຽກຕ່າງຈາກຕົວຢ່າງ.

ບົດຄວາມທີ່ກ່ຽວຂ້ອງ