Dấu @ trong mật khẩu proxy Java
Truyền mật khẩu thô cho PasswordAuthentication và chỉ áp dụng mã hóa URL khi dựng một URL proxy thực tế.
java.net.PasswordAuthentication nhận tên người dùng và một mảng ký tự mật khẩu. Hãy truyền các ký tự gốc của mật khẩu:
var credential = new java.net.PasswordAuthentication(
"proxy-user", "p@ssword".toCharArray());
Giá trị này là mật khẩu minh họa. Trong mã ứng dụng, hãy lấy các ký tự thật từ nguồn thông tin xác thực dự kiến.
Dấu @ bên trong mật khẩu này là dữ liệu, vì mật khẩu đã có đối số riêng của nó. Chuyển nó thành p%40ssword trước hàm khởi tạo sẽ cung cấp một mật khẩu khác.
URL proxy có một cách biểu diễn thông tin xác thực khác. Trong URL như http://proxy-user:p%[email protected]:8080, dấu @ đã mã hóa thuộc phần thông tin người dùng, còn dấu @ phía sau phân tách thông tin đó khỏi máy chủ. Hãy giải mã và mã hóa theo giao diện thực sự tiêu thụ giá trị.
Cách trích dẫn trong shell, thoát ký tự chuỗi Java và mã hóa phần trăm URL cũng giải quyết những vấn đề phân tích khác nhau. Hãy xác định tầng nào đang đọc đầu vào thay vì mã hóa thông tin xác thực lặp đi lặp lại cho đến khi hành vi của yêu cầu thay đổi.