2010-10-06 31 views
1

Je suis très confus sur la façon dont cela est supposé fonctionner. Je l'ai essayé d'utiliser quelque chose comme ceci:NTLMv2 authentification HTTP Java

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()); 
     } 
    } 

Je reçois une erreur 401 renvoyée par cette méthode si évidemment je manque le point. Selon ce chart NTLMv2 devrait être pris en charge dans JRE 6. Ma confusion réside dans le fait que cela fonctionne sur Android. Dans la trace de la pile de l'exception levée par getOutputStream, je vois une implémentation Apache de HttpURLConnection référencée. D'après ce que j'ai trouvé dans mes recherches, Apache est incapable d'inclure les protocoles NTLMv2 en raison de problèmes de licence. Est-ce la raison pour laquelle cela ne fonctionne pas sur Android?

De toute façon je voudrais savoir comment cela se ferait en Java, pas seulement Android.

Répondre

1

Il n'est pas implémenté. Consultez ce numéro: http://code.google.com/p/android/issues/detail?id=4962. Considérez également le fait que Android n'est pas JRE 6, c'est une version modifiée de Java standard.

+0

Ouch. Merci mec! –

+0

C'est possible en utilisant la bibliothèque JCIFS: http://csharpening.net/blog/?p=271 –