Где в хранилище Java запоминаются базовые пароли аутентификации HTTP и как вы их удаляете? - PullRequest
0 голосов
/ 15 декабря 2011

У меня есть приложение Java Swing, которое запускается при запуске через Интернет и получает доступ к файлам данных на сервере через URL-адрес. Файлы обслуживаются Apache2 с HTTP-аутентификацией. Java открывает диалоговое окно, запрашивающее логин, и это прекрасно работает.

Проблема возникает, когда пользователь установил флажок «сохранить этот пароль в вашем списке паролей». Тогда пароль меняется или был неправильным в первую очередь, и вы застряли. Это явно недостаточно умно, чтобы дать вам еще один шанс. Если ваш сохраненный логин не удался, вы получаете ошибку 401 и все.

Итак, где хранятся сохраненные пароли и как их удалить?

Код выглядит следующим образом:

// uri is a String
URL url = new URL(uri);
HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();

// check HTTP response code
int responseCode = urlConnection.getResponseCode();
if (responseCode != HttpURLConnection.HTTP_OK)
  throw new IOException("\nHTTP response code: " + responseCode);

// read the file
BufferedReader reader = new BufferedReader 
               (new InputStreamReader (urlConnection.getInputStream ()));
... etc ...

Этот код работает нормально, за исключением ситуации, когда пользователь сохранил неверный пароль, и в этом случае вы получаете 401.

Насколько я понимаю, Java WebStart помещает свои хуки в классы java.net, так что вы получаете такие вещи, как запрос пароля, который вы не получите, запустив тот же код из командной строки или из вашей IDE. Итак, этот вопрос действительно об этом поведении.

Спасибо!

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

Нет кода? Теперь вы получите неопределенный ответ. В зависимости от вашего HttpClient, он, вероятно, хранится в файлах cookie или что-то в этом роде. Повторная инициализация HttpClient будет отличным первым шагом для отладки. Если это не сработает, размещение небольшого кода здесь было бы очень полезно.

0 голосов
/ 05 мая 2017

В Windows пароли сохраняются в следующем файле.

{user_name} \ AppData \ LocalLow \ Sun \ Java \ Deployment \ безопасность \ auth.dat

Вы можете удалить этот файл, чтобы очистить сохраненные пароли.

...