NTLMv2 HTTP-аутентификация Java - PullRequest
1 голос
/ 06 октября 2010

Я очень смущен тем, как это должно работать. Я пытался использовать что-то вроде этого:

    con = (HttpURLConnection) url2.openConnection();
    con.setReadTimeout(10000);
    con.setInstanceFollowRedirects(true);
    con.setAllowUserInteraction(true);
    con.setDoOutput(true);
    con.setDoInput(true);
        Authenticator.setDefault(new MyAuthenticator());
    con.connect();


class MyAuthenticator extends Authenticator {

      protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication("myUser", "MyPassword".toCharArray());
      }
    }

Я получаю ошибку 401, возвращенную этим методом, так что, очевидно, я упускаю суть. Согласно этому графику NTLMv2 должен поддерживаться в JRE 6. Моя путаница заключается в том, что это работает на Android. В трассировке стека из исключения, выданного getOutputStream, я вижу реализацию Apache HttpURLConnection, на которую ссылаются.

Из того, что я обнаружил в своем исследовании, Apache не может включить протоколы NTLMv2 из-за проблем с лицензированием. Это почему на андроиде не работает?

В любом случае, я бы хотел знать, как это будет сделано на Java, а не только на Android.

1 Ответ

1 голос
/ 06 октября 2010

Не реализовано. Проверьте эту проблему: http://code.google.com/p/android/issues/detail?id=4962. Также учтите, что Android - это не JRE 6, это модифицированная версия стандартной Java.

...