Autenticação Proxy SOCORRO

14 respostas
F

Pessoal estou apanhando que nem cachorro para tentar fazer meu programinha em java se autenticar no proxy e assim conseguir usar um web service externo
Consigo apensar usar web services como localhost. Quando tento acessar algum de fora me vem esse erro [color=red]407 proxy authentication required[/color]
Estou tentando fazer dessa forma

[color=darkblue]           System.setProperty(http.proxyHost, proxy.teste.com.br);

System.setProperty(http.proxyPort, 8080);

System.setProperty(http.proxyUser, DOMINIO\meuUsuario);

System.setProperty(http.proxyPassword, minhaSenha);[/color]

Também tentei fazer assim:

[color=darkblue]            Properties props = new Properties(System.getProperties());

props.put(http.proxySet, true);

props.put(http.proxyHost, proxy.teste.com.br);

props.put(http.proxyPort, 8080);

props.put(http.proxyUser, DOMINIO\meuUsuario);

props.put(http.proxyPassword, minhaSenha);

Properties newprops = new Properties(props);

System.setProperties(newprops);[/color]

Mas continuo recebendo a mensagem de erro. [color=red]407 proxy authentication required[/color]
Os dados de usuário e senha estão corretos pois são os que estou usando para navegar nesse momento.

Alguém poderia me indicar o caminho das pedras e me dizer o que estou fazendo de errado?

14 Respostas

F

Ninguém sabe??? Estou a horas tentando

jamirdeajr

Bom, não sei dizer se funciona para o seu caso, mas ai vai um exemplo que encontrei que codifica usuário e senha

props.setProperty("http.proxySet", "true");
props.setProperty("http.proxyHost", "proxy.teste.com.br");
props.setProperty("http.proxyPort", "8080"); 
props.setProperty("http.proxyType", "4");  // Não sei o tipo de autenticação que você precisa, no exemplo está este
String userid = new sun.misc.BASE64Encoder().encode("DOMINIO\meuUsuario".getBytes());
String password = new sun.misc.BASE64Encoder().encode("minhaSenha".getBytes());
props.setProperty("http.proxyUserName",userid);
props.setProperty("http.proxyPassword",password);
robertoMoraes

Talvez ajude :slight_smile:

F

Amigos, Eu realmente não sei o que acontece.
Fiz o seguinte teste

[color=darkblue]Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(  "proxy.com.br));
        URL url = new URL("www.uol.com.br");
        HttpURLConnection uc = (HttpURLConnection) url.openConnection(proxy);
        uc.connect();

        StringBuffer page = new StringBuffer("");

        BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream()));
        while ((line = in.readLine()) != null)
        {
            page.append(line + "\n");
        }
        System.out.println(page);[/color]

Consegui me conectar normalmente e baixar o conteudo da pagina.

Mas se tento acessar o web service me da o erro [color=red]407 proxy authentication required [/color]

Estou chamando o web Service assim.

[color=darkblue]ServiceFactory factory = ServiceFactory.newInstance(); 
        // define qnames 
        String targetNamespace = "http://tempuri.org/"; 
        QName serviceName = new QName(targetNamespace, "Service1"); 
        QName portName = new QName(targetNamespace, "Service1Soap"); 
        QName operationName = new QName("Service1", "HelloWorld"); 
        URL wsdlLocation = new URL ("http://192.168.0.1/WSTeste/Service1.asmx?wsdl"); 
        // create service 
        Service service = (Service) factory.createService(wsdlLocation, serviceName); 
        // create call 
        Call call = (Call) service.createCall(portName, operationName); 

        // invoke the remote web service 
        String result = (String) call.invoke(new Object[] {"teste teste teste teste"}); 

        System.out.println(result); [/color]

(Ta tudo ok com o Web Service pois ele funciona se eu substituir
http://192.168.0.1/WSTeste/Service1.asmx?wsdl

por
http://localhost/WSTeste/Service1.asmx?wsdl

Falta alguma coisa pra fazer a bendita autenticação? Será que estou chamando da maneira errada? Estou perdido!!!

thundercas

Talvez o webservice que você está tentando acessar está requerendo um tipo específico de autenticação. Acho melhor dar uma analisada nas configurações do webservice e ver qual autenticação está sendo requerida.

F

thundercas nao tem nenhuma autenticação em especial
Eu criei esse web service aqui na minha maquina só pra teste mesmo.
Qualquer web service que eu tente consumir me da o erro de autenticação do proxy

jamirdeajr

Não tinha entendido que você tinha criado o Webservice local e estava querendo acessar via proxy público, neste caso você não teria que utilizar o seu IP externo e não o IP local (192.168.x.x) ?
Você fez assim o teste?

F

jamirdeajr tanto faz o IP que eu tente acessar de qualquer forma ele pede a autenticação seja um web service interno ou externo “por exemplo dos correios” ele só não pede a autenticação se eu coloca-lo como localhost http://localhost/WSTeste/Service1.asmx?wsdl
Se eu substituir o localhost pelo IP da minha maquina ele pede a autenticação de proxy
já estou desanimado e quase desistindo

F

Ah Se eu jogar esse web service no meu browser http://192.168.0.1/WSTeste/Service1.asmx?wsdl
ele acessa normalmente

jamirdeajr

Nos seus testes você está usando JAX-RPC?
Se sim dê uma olhada aqui:
http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/ae/twbs_configwbsclient2webproxy.html

F

não consegui
Ele da a Exception pedindo a autenticação de proxy quando chega nessa linha

[color=darkblue]String result = (String) call.invoke(new Object[] {“teste teste teste teste”});[/color]

jamirdeajr

No exemplo do link ele faz assim, como você deve ter visto, numa ordem um pouco diferente da tua:

Properties prop = new Properties(); InitialContext ctx = new InitialContext(prop); Service service = (Service)ctx.lookup("java:comp/env/service/StockQuoteService"); QName portQname = new QName("http://httpchannel.test.wsfvt.ws.ibm.com", "StockQuoteHttp"); StockQuote sq = (StockQuote)service.getPort(portQname, StockQuote.class); ((javax.xml.rpc.Stub) sq)._setProperty(Constants.HTTP_PROXYHOST_PROPERTY, "proxyHost1.ibm.com"); ((javax.xml.rpc.Stub) sq)._setProperty(Constants.HTTP_PROXYPORT_PROPERTY, "80");
Posta o código ai pra gente ver, se possível com as tags ‘code’ pra ficar legível. No exemplo deles era ‘StockQuote’ a classe de retorno (eu acho), não sei qual o seu mas é nele que tem que setar o usuário e senha do proxy pois ele precisa ser enviado direto na requisição e não na conexão (pelo que entendi… falam em senha setada no ‘stub’)

F

Galera muito obrigado pela ajuda de todos
Depois de quase uma semana tentando finalmente desisti de fazer essa coisa funciona.
Resolvi usar uma conexao com o Banco de dados para recuperar e mandar as informações que precisava
Acredito que seja um problema da rede da minha empresa mesmo e depois de levar essa canseira que levei acabei optando pela solução do banco.
Mais uma vez muito obrigado a todos que tentaram me ajudar

N

Tive o mesmo problema, tente fazer o que eu fiz.
Abra as configurações do projeto e retire as opçoes de proxy da VM.

Criado 7 de abril de 2011
Ultima resposta 26 de fev. de 2013
Respostas 14
Participantes 5