Un @ într-o parolă de proxy Java
Transmiteți parola brută către PasswordAuthentication și aplicați codificarea URL doar la construirea unui URL de proxy real.
java.net.PasswordAuthentication primește un nume de utilizator și un tablou de caractere pentru parolă. Transmiteți caracterele originale ale parolei:
var credential = new java.net.PasswordAuthentication(
"proxy-user", "p@ssword".toCharArray());
Valoarea este o parolă ilustrativă. În codul aplicației, obțineți caracterele reale din sursa de acreditări dorită.
Un @ din această parolă este dată, deoarece parola are deja propriul argument. Transformarea lui în p%40ssword înainte de constructor furnizează o altă parolă.
Un URL de proxy are o altă reprezentare a acreditărilor. Într-un URL precum http://proxy-user:p%[email protected]:8080, @ codificat aparține informațiilor de utilizator, iar @ ulterior separă aceste informații de gazdă. Decodificați și codificați conform interfeței care consumă efectiv valoarea.
Ghilimelele din shell, escaparea literalilor de șir Java și codificarea procentuală a URL-urilor rezolvă și ele probleme de analiză diferite. Stabiliți ce strat citește intrarea în loc să codificați repetat acreditările până când se schimbă comportamentul unei cereri.