Java 프록시 비밀번호의 @
원본 비밀번호를 PasswordAuthentication에 전달하고, URL 인코딩은 실제 프록시 URL을 만들 때만 적용하세요.
java.net.PasswordAuthentication은 사용자 이름과 비밀번호 문자 배열을 받습니다. 원본 비밀번호 문자를 그대로 전달하세요:
var credential = new java.net.PasswordAuthentication(
"proxy-user", "p@ssword".toCharArray());
이 값은 예시 비밀번호입니다. 애플리케이션 코드에서는 의도한 자격 증명 원본에서 실제 문자를 가져오세요.
이 비밀번호 안의 @는 데이터입니다. 비밀번호에는 이미 자체 인자가 있기 때문입니다. 생성자에 전달하기 전에 p%40ssword로 바꾸면 다른 비밀번호를 넘기게 됩니다.
프록시 URL에는 또 다른 자격 증명 표현이 있습니다. http://proxy-user:p%[email protected]:8080 같은 URL에서 인코딩된 @는 사용자 정보 안에 속하고, 뒤의 @는 그 정보와 호스트를 구분합니다. 값을 실제로 소비하는 인터페이스에 맞추어 디코딩하고 인코딩하세요.
셸 인용, Java 문자열 리터럴 이스케이프, URL 퍼센트 인코딩도 각기 다른 구문 분석 문제를 해결합니다. 요청 동작이 바뀔 때까지 자격 증명을 반복해서 인코딩하는 대신 어느 계층이 입력을 읽는지 판단하세요.