IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

Problème d'authenfication avec HttpClient 4


Sujet :

Développement Web en Java

  1. #1
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 32
    Par défaut Problème d'authenfication avec HttpClient 4
    Bonjour,

    Je suis une debutante en developpement et j'aurai besoin de votre aide s'il vous plait. Voila j'utilise HttpClient 4 pour me connecter à un site afin de recuperer certaines informations dont j'ai besoin le problème et que je n'arrive pas à me connecter à partir d'Eclipse. au fait quand je me connecte à partir de mon navigateur en donnant le login et le mot de passe et que par la suite je lance mon code java j'arrive à recuperer le contenu du site mais si je ne fais pas ça et que j'essaie de me connecter directement à partir de mon code cela ne fonctionne pas ( sans aucun code d'erreur).

    Merci d'avance

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Ton code doit gérer l'authentification login/mot de passe. Tu pourrais commencer par exemple par regarder les trammes HTTP qui passent avec le navigateur. sur Firefox par exemple, il existe des plugin pour faire ça. Ensuite, il te suffira de refaire la même chose dans ton code.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 32
    Par défaut
    Je te remercie pour ta réponse. Au fait, afin de pouvoir répondre à cette question j'ai utilisé un outil qui s'appelle " DebugBar" une sorte d’équivalent de Firebug pour IE pour pouvoir récupérer la requête que lui il utilise (il fait un GET en utilisant une URL bien précise que j'ai fini par reprendre) mais même avec ça , ça ne marche pas. Je me demande si ce n'est pas un problème de session? voici le code que j'utilise pour m'authentifier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    try {
     
    		   DefaultHttpClient httpclient = new DefaultHttpClient();
    		  httpclient.getParams()
    		  .setParameter(HttpMethodParams.USER_AGENT,
    		  "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)");
    		  HttpRequestInterceptor preemptiveAuth = new BasicAuthRequestInterceptor();
    		  httpclient.addRequestInterceptor(preemptiveAuth, 0);
    		  httpGet = new HttpGet(
    		  "URL que j'ai récupéré de DebugBar");
    		  UsernamePasswordCredentials creds = new UsernamePasswordCredentials(
    				  "login", "password");
    		  httpclient.getCredentialsProvider().setCredentials(AuthScope.ANY,
    				  creds);
     
    	  } catch (Exception e) {
     
    		  e.printStackTrace();
    	  }
    et voici le code de la classe BasicAuthRequestInterceptor()


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    public class BasicAuthRequestInterceptor implements HttpRequestInterceptor {
    	public void process(final HttpRequest request, final HttpContext context)
     
    	throws HttpException, IOException {
     
    		AuthState authState = (AuthState) context.getAttribute(ClientContext.TARGET_AUTH_STATE);
    		CredentialsProvider credsProvider = (CredentialsProvider) context.getAttribute(ClientContext.CREDS_PROVIDER);
    		HttpHost targetHost = (HttpHost) context.getAttribute(ExecutionContext.HTTP_TARGET_HOST);
     
    		if (authState.getAuthScheme() == null) 
    		{
    			AuthScope authScope = new AuthScope(targetHost.getHostName(),
    			targetHost.getPort());
     
    			Credentials creds = credsProvider.getCredentials(authScope);
     
    			if (creds != null) {
    				authState.setAuthScheme(new BasicScheme());
    				authState.setCredentials(creds);
     
    			}
     
    		}
     
    	}

  4. #4
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 32
    Par défaut
    j'ai oublié de preciser que le site que j'attaque ne fonctionne pas avec Firefox mais seulement avec IE d'ou le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     httpclient.getParams().setParameter(HttpMethodParams.USER_AGENT,
        "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)");
    et quand je veux passer sur Firefox il me sort un truc du genre :
    "This site is not compatible with this Web Browser. It is designed to work with Internet Explorere 6 or later.Sorry for any inconvenience."

    Merci

  5. #5
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    S'il faut se logguer avec un navigateur pour faire tourner ton code, alors le serveur hébergeant le site a très certainement ouvert une session avec ton adresse IP.
    Il te faut aussi gérer les cookies. Voir la doc du HTTPClient sur le site officiel.
    Ensuite, c'est du debug étape par étape en comparant ce qui a été fait par le navigateur et ton code.
    Assure-toi aussi d'envoyer les bons entêtes pour chaque requêtes.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  6. #6
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 32
    Par défaut
    Je te remercie beaucoup pour ta réponse. Je pensais que HttpClient devait gérer les cookies à lui seul et que je n'avais pas besoin d'intervenir? Je voulais savoir si l'url que je lui envoie et réellement la bonne, c- à- d celle du traitement du formulaire. DebugBar me propose d'exporter les données des hits HTTP, que je récupére sous forme d'un fichier . har qui contient le login et le password et la method :Get mais je ne sais pas si c'est le bon formulaire vu qu'il ne contient pas de balise <form>. Bref je ne connais rien en développement Web alors j'ai des doutes sur les éléments que je manipule.

    Merci.

Discussions similaires

  1. Problème avec HttpClient
    Par dialloma dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 21/06/2007, 10h59
  2. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02
  3. [Kylix] problème compilation kylix3 avec redhat 9.0
    Par madininaoursa dans le forum EDI
    Réponses: 1
    Dernier message: 02/07/2003, 16h21
  4. Problèmes de versions avec Xalan, Xerces et Java
    Par honeyz dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 05/06/2003, 10h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo