Java ப்ராக்ஸி 407 பிழைகள்: CONNECT-க்கான Basic அங்கீகாரத்தைச் சரிபார்க்கவும்
Java உள்நுழைவுத் தகவல்களை குறிப்பிட்ட ப்ராக்ஸிக்கு மட்டுப்படுத்தி, HTTPS CONNECT சுரங்கங்களுக்கான JDKயின் தனி Basic அங்கீகாரக் கொள்கையைச் சரிபார்க்கவும்.
மீண்டும் மீண்டும் 407 வருவது எப்போதும் Java தவறான கடவுச்சொல்லை அனுப்பியது என்று பொருளல்ல. JDKயின் குறிப்பு செயலாக்கம் பொதுவாக HTTPS CONNECT சுரங்கங்களுக்கு Basic அங்கீகாரத்தை முடக்குகிறது. Basic மட்டுமே வழங்கும் ப்ராக்ஸி, உங்கள் அங்கீகார callback உள்நுழைவுத் தகவல்களை வழங்கும் முன்னரே நிராகரிக்கப்படலாம்.
உள்நுழைவுத் தகவல் callbackன் வரம்பைக் கட்டுப்படுத்தவும்
Java HTTP கிளையண்டுடன் ஒரு Authenticatorஐ இணைத்து, அதை அமைக்கப்பட்ட ப்ராக்ஸிக்கு மட்டுப்படுத்தவும்:
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 ஒரு இணையதளத்தின் அங்கீகாரக் கோரிக்கைக்கு கவனமின்றி ப்ராக்ஸி கணக்கை வழங்குவதைத் தடுக்கின்றன.
அங்கீகாரத்தின் எந்தக் கட்டம் தோல்வியடைகிறது எனச் சரிபார்க்கவும்
சாதாரண HTTP ப்ராக்ஸி பயன்பாடு மற்றும் CONNECT சுரங்கங்களுக்கு முடக்கப்பட்ட அங்கீகாரத் திட்டங்களின் தனித்தனி அமைப்புகள் JDKயில் உள்ளன. தொடர்புடைய பெயர்கள் jdk.http.auth.proxying.disabledSchemes மற்றும் jdk.http.auth.tunneling.disabledSchemes.
இதனால்தான் HTTP போக்குவரத்தின் அங்கீகாரம் வெற்றியடைந்தாலும் அதே ப்ராக்ஸி வழியான HTTPS சுரங்கம் தோல்வியடையலாம். மற்றொரு கணினியிலும் அதே நடைமுறை இயல்புநிலைகள் உள்ளன என்று கருதாமல், இயக்கச்சூழலின் conf/net.properties மற்றும் வெளியீட்டுக் கொள்கையைச் சரிபார்க்கவும்.
முடக்கப்பட்ட திட்டங்களின் பட்டியலை உலகளவில் காலியாக்குவது பொதுவான ப்ராக்ஸி தீர்வல்ல. மறையாக்கமற்ற HTTP ப்ராக்ஸிக்கு அனுப்பப்படும் Basic உள்நுழைவுத் தகவல்களை இலக்குடன் பின்னர் உருவாக்கும் TLS இணைப்பு பாதுகாக்காது. மாற்றத்தை ஒப்புக்கொள்வதற்கு முன் ப்ராக்ஸி போக்குவரத்து, அங்கீகார முறை, வெளியீட்டுக் கொள்கை ஆகியவற்றை மதிப்பாய்வு செய்யவும்.
JDKயின் உள்ளமைந்த அங்கீகாரத்தின் ஆவணப்படுத்தப்பட்ட நடத்தையும் ப்ராக்ஸி அறிவிக்கும் ஒவ்வொரு திட்டத்தையும் ஆதரிப்பதற்கான உறுதியல்ல. கைமுறையாக வழங்கப்பட்ட Authorization அல்லது Proxy-Authorization தலைப்பு தானியங்கி அங்கீகார ஓட்டத்தை மாற்றும்; எனவே callback எடுத்துக்காட்டிலிருந்து வேறுபட்டு நடந்தால் தனிப்பயன் தலைப்புகளைச் சரிபார்க்கவும்.