authentifier avec ntlm (ou kerberos) à l'aide de java UrlConnection
J'ai besoin de consommer un service web rest en java, en passant les informations d'identification d'un compte d'utilisateur de domaine.
droit maintenant, je suis en train de faire avec l'asp classique
set xmlHttp = server.createObject( "msxml2.serverxmlhttp" )
xmlHttp.open method, url, false, domain & "\" & user, password
xmlHttp.send body
out = xmlHttp.responseText
set xmlHttp = nothing
et avec asp.net
HttpWebRequest request = (HttpWebRequest) WebRequest.Create( url );
request.Credentials = new NetworkCredential(user, password, domain);
request.Method = WebRequestMethods.Http.Get
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
StreamReader outStream = new StreamReader( response.GetResponseStream(), Encoding.UTF8) ;
output = outStream.ReadToEnd();
comment puis-je réaliser cela avec java? Prendre en compte le fait que je ne suis pas en utilisant les informations d'identification de l'utilisateur actuellement connecté, je suis en spécifiant le compte de domaine (j'ai le mot de passe)
s'il vous plaît dites-moi que c'est aussi facile qu'avec l'asp classique et asp.net....
OriginalL'auteur opensas | 2009-07-22
Vous devez vous connecter pour publier un commentaire.
Selon cette page, vous peut utiliser le haut-JRE classes, avec la réserve que les versions précédentes de Java ne peut le faire que sur une machine Windows.
Toutefois, si vous êtes prêt à vivre avec un 3e partie de la dépendance, de l'OMI Apache Commons HttpClient 3.x est le chemin à parcourir. Ici est la documentation pour l'utilisation de l'authentification, y compris l'authentification NTLM. En général, HttpClient est beaucoup plus fonctionnelle de la bibliothèque.
La dernière version de HttpClient est 4.0, mais
apparemment, cette version ne prend pas en charge l'authentification NTLMcette version nécessite un peu de travail supplémentaire.Voici ce que j'ai pense le code devrait ressembler, bien que je n'ai pas essayé:
Bonne chance.
Le dernier que j'ai entendu, l'Apache client ne prend PAS en charge l'authentification NTLMv2. Et ils sont réticents à appuyez sur JCIFS parce que a) ils prétendent que c'est LGPLv2 n'est pas compatible avec leur licence et b) ils sont généralement sont las de la MME choses. Mais il n'a pas d'importance parce que si vous voulez l'interopérabilité avec Microsoft, NTLM est le dénominateur commun de mécanismes d'authentification. Kerberos ne fonctionne pas si le client n'a pas accès à un contrôleur de domaine ou si le temps de synchronisation est désactivée ou si le DNS n'est pas tout à fait à droite ou ... etc.
Salut ioplex. Je ne sais pas où vous avez entendu cela, mais c'est incorrect. S'il vous plaît vérifier les docs que j'ai lié. J'ai utilisé avec succès NTLM avec les deux HttpClient 3.x et 4.0.
Le premier lien est rompu.
OriginalL'auteur Matt Solnit
Une solution compatible java.net.URLStreamHandler et java.net.L'URL est com.intersult.net.http.NtlmHandler:
Vous pouvez également utiliser java.net.Proxy dans les url.openConnection(proxy).
Utiliser Maven-Dépendance:
OriginalL'auteur Tires
Prendre un coup d'oeil à la SpnegoHttpURLConnection classe dans le SPNEGO HTTP Filtre de Servlet projet. Ce projet a quelques exemples.
Ce projet a un de la bibliothèque du client c'est à peu près ce que vous faites dans votre exemple.
Prendre un coup d'oeil cet exemple de la javadoc...
Ceci ne répond pas à la question. Cette solution fonctionne pour l'authentification de Base, mais ne fonctionne pas pour Kerbos ou l'authentification NTLM que la question se pose.
OriginalL'auteur Pat Gonzalez