comment passer un proxy en s'authentifiant ---> erreur 407 - Java - Programmation
Marsh Posté le 09-03-2004 à 10:25:40
ReplyMarsh Posté le 09-03-2004 à 10:36:50
en fait tu es pas le premier, lis ce topic
http://forum.hardware.fr/forum2.ph [...] 0&subcat=0
edit: pour la Base 64, je l'ai fais avec une classe de Sun
Marsh Posté le 09-03-2004 à 10:54:09
oui mais j'ai deja cherché sur le site de sun base64Encoder mais je ne la trouve pas !!!
c vraiment floue tt ca :s
si vous avez ette classe, vous pouvez me la mettre sur un ftp svp?
Marsh Posté le 09-03-2004 à 10:59:08
uriel a écrit : edit: pour la Base 64, je l'ai fais avec une classe de Sun |
mais c'est super mal ca
Marsh Posté le 09-03-2004 à 10:59:28
supertimor2k a écrit : si vous avez ette classe, vous pouvez me la mettre sur un ftp svp? |
il te va pas le lien que je t'ai filé ?
Marsh Posté le 09-03-2004 à 11:06:23
benou a écrit : |
pourquoi
j'ai pris celle ci sun.misc.BASE64Encoder et ca marche tres bien
Marsh Posté le 09-03-2004 à 11:11:14
uriel a écrit : |
c'est des packages cachés auxquels tu n'es pas sensé faire référence : rien ne garantit que ces classes seront (ou ont été) présentes dans les versions futures (ou passées) de java.
Sans dire que si on essaye de faire tourner ton prog sur une autre jvm que celle de Sun il va planter.
Bref, c'est une très mauvaise idée
Marsh Posté le 09-03-2004 à 11:13:21
ok, je le note, mais comme là c'etait juste pour moi pour un projet perso qui tourne sur ma machine, ca va, mais merci
mais ca veut dire quoi, ce sont des packages cachés, on trouve des references à ce package partout sur le net
pourquoi integré un package que tout le monde peut utiliser, si personne doit le faire
Marsh Posté le 09-03-2004 à 11:18:40
uriel a écrit : mais ca veut dire quoi, ce sont des packages cachés, on trouve des references à ce package partout sur le net |
C'est des packages qui servent à l'implémentations de sun de l'API java.
A quoi ca sert qu'il y ait une API standard si c'est pour utiliser des implémentations spécifiques derrière ?
C'est des packages cachés, ca veut dire que tu n'es pas sensé savoir qu'ils existent. D'ailleur, tu ne trouveras pas de javadoc ni les sources de ces classes parce que c'est des classes de sun. Des classes internes à leur implémentation java.
Et c'est pas parce que plein de gens font des conneries sur le net qu'il faut faire les même qu'eux
Surtout pour un truc aussi concon qu'un encodage Base64 ...
Y a des truc pour lesquels t'es plus ou moins obligé (ex : compilation dynamique), mais pour du base 64, là je dis non
Marsh Posté le 09-03-2004 à 11:26:40
benou a écrit : |
C'est pour ça que je trouve immensément débile de foutre ça en package sun et pas en java.util.
Marsh Posté le 09-03-2004 à 11:41:24
Taiche a écrit : |
Marsh Posté le 09-03-2004 à 11:52:52
Taiche a écrit : |
Le fait que ce soit dans un package sun t'es^même pas sensé le savoir ... maintenant tu peux trouver dommage qu'il n'aient pas ajouter une classe utilitaire pour faire ca dans l'api, mais c'est un autre problème ...
Marsh Posté le 09-03-2004 à 11:54:21
uriel a écrit : ok, jle ferais plus... |
sinon panpan kuku
Marsh Posté le 09-03-2004 à 12:10:30
benou a écrit : |
Ouais 'fin faut arrête les abus, aussi. Encoder/décoder du Base64, c'est pas THE algo de le mort à protéger coûte que coûte ; qu'ils cachent des conneries genre HTTPS ou gestion de certificats j'veux bien comprendre, m'enfin le Base64... En plus y a pas d'appel natif (en tout cas j'espère pour eux ) donc franchement, j'vois absolument pas l'intérêt de cacher une telle classe.
Enfin, que je sois pas censé le savoir, j'en ai rien à battre ; non seulement c'est un secret de polichinelle à 2 balles mais en plus ça veut strictement rien dire de cacher un truc pareil
Marsh Posté le 09-03-2004 à 12:12:26
benou le lien que tu m'as filé est bon mais je ne vois pas ou la telecharger....
je regarde à nouveau
Marsh Posté le 09-03-2004 à 13:05:39
Taiche a écrit : Enfin, que je sois pas censé le savoir, j'en ai rien à battre ; non seulement c'est un secret de polichinelle à 2 balles mais en plus ça veut strictement rien dire de cacher un truc pareil |
t'as pas compris ce que je voulais dire.
Ce que je dis c'est que la calsse Base 64 répond à un besoin interne de l'implémentation de sun.
le truc c'est pas de cacher ou de ne pas cacher c'est de définir une API. L'API, en l'état n'offre pas de possibilité de faire du Base64. C'est contre ce point là que vous pouvez éventuellemnt raller.
Mais ca n'a rien à voir (si on peut dire) avec le fait qu'il y ait une classe qui fasse ca dans un des jars du jre. Je suis sûr qu'il y a plein d'autres classes dans ces jars qui sont bein pratiques. Mais c'est pas parce que quelqu'un a développé quelque part une classe pratique qu'elle doit forcément être dans l'API standard. Le problème c'est pas de cacher ou non : la définition de l'API ne se fait pas en fonction des implémentations de l'API et des classes qu'elle peut éventuellement contenir.
je sais pas si je vais arriver à me faire comprendre ...
pour le download de du base64 made in apache : http://jakarta.apache.org/commons/codec/ (rubrique download)
Marsh Posté le 09-03-2004 à 13:36:48
benou a écrit : |
Si j'pige bien, sauf que Base64 est quand même quelque chose de super utilisé et que quand on fournit des moyens de passer les proxies, on va jusqu'au bout. Sans Base64, t'es mort. Idem, dans une moindre mesure, pour passer du binaire dans du XML. Pareil pour javamail et les fichiers attachés.
Bref, la classe étant justement implémentée en interne, ça fait un peu pouilleux et pas sérieux.
Marsh Posté le 09-03-2004 à 13:39:06
c'est surtout un truc tres util, et regulierement utilisé, il est fait mais on ne peut pas prendre celui de l'API de Sun parce qu'il est pas fait pour ca
logique que je comprends pas mais bon, pour quoi ne pas rendre toute les classes Sun accessible, ou au moins utilisable... comprends pas
Marsh Posté le 09-03-2004 à 13:39:39
uriel a écrit : c'est surtout un truc tres util, et regulierement utilisé, il est fait mais on ne peut pas prendre celui de l'API de Sun parce qu'il est pas fait pour ca |
Comment j't'ai grillaid tarace
Marsh Posté le 09-03-2004 à 13:40:53
Taiche a écrit : |
j'aime bien en rajouter une couche
Marsh Posté le 09-03-2004 à 13:56:15
uriel a écrit : pour quoi ne pas rendre toute les classes Sun accessible, ou au moins utilisable... |
mais
Marsh Posté le 09-03-2004 à 13:57:08
benou a écrit : |
je sais bien qu'elles sont accessible, je disais pourquoi ne pas les integrer dans l'API normalement
Marsh Posté le 09-03-2004 à 13:59:56
uriel a écrit : |
Parce que une API c'est pas un foure-tout
mais je suis d'accord que le Base64 pourrait être présent, tout comme l'est le URLEncoder ...
Pour répondre à Taiche, je me souviens d'un topic où quelqu'un avait donné du code pour s'authentifier auprès d'un proxy sans utiliser de base64 en utilisant des classes de l'API ...
Marsh Posté le 09-03-2004 à 14:02:21
je serais curieux de le retrouver, je m'en sert pour passer en https avec .htacess, et le mot de passe est en Base64
Marsh Posté le 09-03-2004 à 14:06:14
+12
Marsh Posté le 09-03-2004 à 14:09:36
ReplyMarsh Posté le 09-03-2004 à 14:15:21
hop : http://www.developer.com/java/othe [...] hp/1551421
Marsh Posté le 09-03-2004 à 14:17:15
Code :
|
Marsh Posté le 09-03-2004 à 14:19:16
Marsh Posté le 09-03-2004 à 15:08:57
ReplyMarsh Posté le 09-03-2004 à 15:10:27
benou a écrit : |
oui, et justement, il propose cette solution
Citation : |
Marsh Posté le 09-03-2004 à 15:11:53
uriel a écrit : |
mais ... regarde juste au dessus
edit : ca :
Citation : public class SimpleAuthenticator |
Marsh Posté le 09-03-2004 à 15:14:37
ReplyMarsh Posté le 09-03-2004 à 15:17:28
uriel a écrit : je capte pas comment ce truc peut fonctionner |
pkoi ca marcherait pas ?
Perso je trouve ca pareil que le paramétrage du proxy en variable système (ce qui est vraiment n'importe quoi, soit dit en passant)
Marsh Posté le 09-03-2004 à 15:18:59
Ah ui, c'est vrai, l'Authenticator ! En plus, j'l'utilise dans mes classes de gestion HTTP et j'en avais parlé dans mon opic sur le HTTPS
Marsh Posté le 09-03-2004 à 15:19:38
non, ce que je veux dire, c'est que l'autentification exige que le mot de passe soit en Base64, ici je vois pas comment l'autentification peut fonctionner
edit: bon je vais lire la doc sur l'Authenticator
Marsh Posté le 09-03-2004 à 15:20:30
uriel a écrit : non, ce que je veux dire, c'est que l'autentification exige que le mot de passe soit en Base64, ici je vois pas comment l'autentification peut fonctionner |
C'est PasswordAuthentication qui le fait pour toi.
Marsh Posté le 09-03-2004 à 10:17:39
ma classe doit télécharger un site à travers un proxy mais je n'arrive pas à le passer.
import java.io.*;
import java.net.*;
public class UnAttrapeURL
{
URLConnection saCon;
String id="sd16v:jzkjzz";
public UnAttrapeURL(String telURL)
{
//définition du proxy pour le système
System.setProperty("proxySet","true" );
System.setProperty("http.proxyHost","192.0.2.1" );
System.setProperty("http.proxyPort","3128" );
String encodedPassword = base64Encode(id);
saCon.setRequestProperty( "Proxy-Authorization", encodedPassword );
//System.setProperty("http.proxyUser","sd16v" );
//System.setProperty("http.proxyPassword","jzkjzz" );
//définition des paramètres de l'URLConnection
try{saCon=(new URL(telURL)).openConnection();
saCon.setDoInput(true);
saCon.setDoOutput(false);
saCon.setRequestProperty("Proxy-Authorization", encodedPassword);
saCon.connect();}
catch(Exception e){e.printStackTrace();}
//définition des flux
InputStream in=null;
OutputStream out=null;
try{in = saCon.getInputStream();
out=new FileOutputStream("toto" );}
catch(Exception e){e.printStackTrace();}
//boucle de lecture des données
byte[] tampon = new byte[4096];
int octets_lus;
try{while((octets_lus=in.read(tampon)) != -1)
out.write(tampon,0,octets_lus);}
catch (Exception e){e.printStackTrace();}
//fermeture des flux
try{in.close();
out.close();}
catch (Exception e){e.printStackTrace();}
}
public static void main(String[] telsArgs)
{
new UnAttrapeURL("http://www.wanadoo.fr" );
}
}
j'ai une levée d'exception erreur407 dans le try qd je fais saCon.getInputStream(). J'ai trouvé sur le net qu'il fallait encodé en base64 le login et le password, c'est obligatoire ?
si oui, pouvez vous m'indiquer ou trouver une class qui encode en base64 parce que je n'en ai pas trouvée.
merci