Boa tarde pessoal, estou com um belo de um problema aqui, vejam se podem me dar uma luz:
Estou fazendo uma POC sobre segurança em Web Services, primeiramente fiz utilizando apenas autenticação básica(fiz um client em java que acessava o WS, utilizei axis 2, gerando stubs).
Essa autenticação básica funcionou perfeitamente(tanto no browser, qnto no cliente Java que eu fiz pra acessar)
Porém, quando fui fazer o acesso usando HTTPS(gerei o certificado usando o keytool), não ta dando certo, e toda hora que eu pesquiso, eu acho que o problema pode ser outra coisa.
Eu fiz o seguinte, mudei na classe stub o endpoint(em todo lugar que tinha http, mudei pra https) e rodei o programa:
auth.setPassword("123");auth.setUsername("matheus");auth.setPreemptiveAuthentication(true);//Setaapropriedadedotipodeautenticaçãoqueseráfeita,eoobjeto//auth,quedescreveaautenticação.options.setProperty(HTTPConstants.AUTHENTICATE,auth);options.setProperty("javax.net.ssl.trustStore","C:\\Documents and Settings\\Administrador\\.keystore");//Realizaarequisiçãodoserviço,passandoosparâmetrosdefinidosno//métododoWSSysInfoStub.GetSysInforequest=newSysInfoStub.GetSysInfo();request.setPasswd("SENHA SENHA SENHA SENHA SENHA");request.setUser("USER USER USER USER");try{stub.getSysInfo(request);SysInfoStub.GetSysInfoResponseresponse=stub.getSysInfo(request);System.out.println(response.get_return());}catch(RemoteExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}
Que me apresentou o seguinte erro:
Ao que parece, é erro no .keystore, só que não to entendendo o que eu posso fazer pra resolver isso
Pesquisei em vários lugares, mas não encontrei nada pudesse resolver meu problema…
Talvez o pacote estivesse errado.
Aparentemente está ok.
Vou verificar melhor.
Valeu
mrcastro
Eu já consegui resolver o problema sim, o código correto:
auth.setPassword("123");auth.setUsername("matheus");auth.setPreemptiveAuthentication(true);// Seta a propriedade do tipo de autenticação que será feita, e o objeto// auth, que descreve a autenticação.options.setProperty(HTTPConstants.AUTHENTICATE,auth);// specify the location of where to find key material for the default// TrustManager// (this overrides jssecacerts and cacerts)System.setProperty("javax.net.ssl.trustStore","client.keystore");System.setProperty("javax.net.ssl.trustStorePassword","changeit");// use Sun's reference implementation of a URL handler for the "https"// URL protocol type.System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");// dynamically register sun's ssl providerSecurity.addProvider(newcom.sun.net.ssl.internal.ssl.Provider());// Realiza a requisição do serviço, passando os parâmetros definidos no// método do WSSysInfoStub.GetSysInforequest=newSysInfoStub.GetSysInfo();request.setPasswd("SENHA SENHA SENHA SENHA SENHA");request.setUser("USER USER USER USER");request.getPasswd();try{stub.getSysInfo(request);SysInfoStub.GetSysInfoResponseresponse=stub.getSysInfo(request);System.out.println(response.get_return());}catch(RemoteExceptione){// TODO Auto-generated catch blocke.printStackTrace();}