Dificuldade em se acessar um Web Service

4 respostas
mrcastro

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);

		// 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);
		options.setProperty("javax.net.ssl.trustStore", 
			    "C:\\Documents and Settings\\Administrador\\.keystore");

		
		
		// Realiza a requisição do serviço, passando os parâmetros definidos no
		// método do WS
		SysInfoStub.GetSysInfo request = new SysInfoStub.GetSysInfo();
		request.setPasswd("SENHA SENHA SENHA SENHA SENHA");
		request.setUser("USER USER USER USER");

		try {
			stub.getSysInfo(request);
			SysInfoStub.GetSysInfoResponse response = stub.getSysInfo(request);
			System.out.println(response.get_return());

		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.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 :frowning:

Pesquisei em vários lugares, mas não encontrei nada pudesse resolver meu problema…

Alguém tem idéia do que eu preciso fazer?

4 Respostas

sapobomba

Bom dia

E então, conseguiu resolver este problema?

Eu to fazendo praticamente a mesma coisa que você, e agora também está dando essa exception.

:?

Rafael_Nunes

Importaram esse certificado para o cacerts do cliente também?

sapobomba

Opaa

consegui aqui, pelo menos não ta dando mais esse erro.

Havia algo de errado na tag abaixo no arquivo services.xml

<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
		<ramp:passwordCallbackClass>br.com.minha.classe.ServicesPolicy</ramp:passwordCallbackClass>
	</ramp:RampartConfig>

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 provider
		Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

		// Realiza a requisição do serviço, passando os parâmetros definidos no
		// método do WS
		SysInfoStub.GetSysInfo request = new SysInfoStub.GetSysInfo();
		request.setPasswd("SENHA SENHA SENHA SENHA SENHA");
		request.setUser("USER USER USER USER");
		request.getPasswd();

		try {

			stub.getSysInfo(request);
			SysInfoStub.GetSysInfoResponse response = stub.getSysInfo(request);
			System.out.println(response.get_return());

		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
Criado 3 de abril de 2008
Ultima resposta 3 de jul. de 2008
Respostas 4
Participantes 3