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 :

Identiants passés dans URL


Sujet :

Développement Web en Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2007
    Messages : 16
    Par défaut Identiants passés dans URL
    Bonjour,
    Ma problématique est la suivante : dans un morceau de code, passer une instruction (=reboot) au programme (=webshell) d'un appareil via une url ; dans une version antérieure de ce programme, passer une instruction se faisait sans authentification et l'url http://xx.xxx.xxx.xxx/printer/webshell?reboot produisait effectivement le comportement attendu.
    La version récente de ce programme requière une identification. Pour tester on renseigne la barre d'adresse d'un navigateur web avec l'url, et une fenêtre d'identification apparait effectivement ; si identification validée, le reboot se produit ensuite.
    le code suivant produit l'url
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    urlAppareil = "http://" + bi.getAdresseIP() + "/printer/webshell?reboot";
    			URL urli = new URL(urlAppareil);
    			URLConnection urlcon = urli.openConnection();
    			urlcon.setRequestProperty("Method","POST");
    			urlcon.setDoOutput(true);
    			urlcon.setDoInput(true);
    			urlcon.setUseCaches(false);
    			urlcon.connect();
    J'ai tenté d'écrire l'url "http://username@password" + bi.getAdresseIP() + "/printer/webshell?reboot"; sans résultat:
    l'erreur logée est dans les 2 cas (avec et sans les id):
    java.io.IOException: Server returned HTTP response code: 401 for URL:http://xx.xxx.xxx.xxx/printer/webshell?reboot
    java.io.IOException: Server returned HTTP response code: 401 for URL: http://toto:passtoto@xx.xxx.xxx.xxx/printer/webshell?reboot

    Si cette url est passée dans la barre d'adresse de I.E, erreur de page, (bon, c'est du I.E et un bridage est paramétré, d'après ce que j'ai pu lire). Avec FireFox, la commande est exécutée. Donc la syntaxe qui consiste à passer les identifiants sous la forme "http://username:password@adresseip/etc" fonctionne, dans que l'url est exécuté par un browser.
    Ma question : quel autre moyen existe-t-il de passer en http des identifiants à un programme ?
    N.B ma problématique ressemble à celle du post http://www.developpez.net/forums/d41...tomatiquement/, mais la solution ne convient pas

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Par défaut
    Salut,

    J'ai déja rencontré cette problématique sur un projet perso.

    Tu ne peux en effet pas te contenter de fournir l'url en concaténant les différentes données (ex: http://user:pass@adresse).
    Si tu utilises l'api du jdk pour effectuer la connexion :
    tu peux utiliser l'objet java.net.URLConnection et valoriser le header de ta requête pour que le serveur sache que tu souhaites effectuer ta requête http en utilisant des credentials.
    Tu noteras un encodage en base 64. C'est la norme du protocole.

    Tu as ici un exemple d'un de mes vieux codes pour une authentification http basic:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    URL url = new URL("http://" + account.getSiteUrl() + account.getSiteUrlResource());
    	    String idAndPass = account.getUsername() + ":" + account.getPassword();
     
    	    String encodingGood = new sun.misc.BASE64Encoder().encode(idAndPass.getBytes());
     
    	    // to flag the authentication in 
    	    URLConnection uc = url.openConnection();
    	    uc.setRequestProperty("Authorization", "Basic " + encodingGood);
    Pour info, tu as une version sécurisée : l'authentification digest (chiffrement)

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    sinon, pour être plus souple, ne pas dépendre en une classe en com.sun qui pourrait disparaitre du jour au lendemain, et si t'as besoin de faire beaucoup de machins en http avec ton webshell, tu as common http client de jakarta, qui fourni des apis pour supporter l'identification:

    (exemple avec BASIC ici)
    http://svn.apache.org/viewvc/httpcom...va?view=markup

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2007
    Messages : 16
    Par défaut
    Merci de vos réponses. Je teste ça très rapidement.

Discussions similaires

  1. Boulette dans code FAQ Comment récupérer les paramètres passés dans une url
    Par NoSmoking dans le forum Contributions JavaScript / AJAX
    Réponses: 5
    Dernier message: 14/11/2013, 13h17
  2. Réponses: 0
    Dernier message: 27/01/2011, 17h46
  3. recuperation de parametres passés dans l'url
    Par llusca dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/11/2007, 19h05
  4. Bouton radio et espaces dans URL
    Par lra dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 19/01/2005, 16h09
  5. [JSP] carac & dans URL et XML
    Par c.tranquille dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 24/07/2003, 15h00

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