WS-Security com Axis 1.4 e WSS4J 1.5

1 resposta
javaBeats

Olá!

Estou precisando de um tutorial sobre seguranca em web services no Apache Axis… usando estas versões do Axis e WSS4J.

O tutorial da página do wss4j serve para o Axis 1.2, e usando o PWCallback, que não existe nas versões mencionadas. Isso me leva a crer que a maneira de se fazer a autenticaćão do usuário do web service mudou nas novas implementaćões, mas eu procurei feito louco no Google por algum tutorial, sem sucesso… :cry:

Se alguém puder me ajudar, com algum tutorial ou um exemplo básico… com o resto eu me viro… :smiley:

Desde já, eu agradećo!

1 Resposta

V

E aih cara, blz?

Acho q estou tendo o msm problema q vc jah teve. Não estou conseguindo colocar as informações do usuário na chamada do web service. Sei que preciso colocar o seguinte trecho no xml:

<wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/07/secext"
 	soapenv:mustUnderstand="true">
 	<wsse:UsernameToken>
 		<wsse:Username>usuario</wsse:Username>
 		<wsse:Password Type="wsse:PasswordText">senha</wsse:Password>
 	</wsse:UsernameToken>
 </wsse:Security>

Estou utilizando o seguinte trecho de código para colocar os parametros na mensagem:

private void preparaAutenticacao(Call call)  {
 		try {
 	    	SOAPHeaderElement wsseSecurityToken = new SOAPHeaderElement(new QName("wsse", "Security"));
 	    	wsseSecurityToken.addAttribute("xmlns", "wsse", "http://schemas.xmlsoap.org/ws/2002/07/secext");
 	    	wsseSecurityToken.addAttribute("soapenv", "wsse", "http://schemas.xmlsoap.org/ws/2002/07/secext");
 	    	wsseSecurityToken.setMustUnderstand(true);
 	
 	    	SOAPElement wsseUsernameToken= wsseSecurityToken.addChildElement("wsse","UserNameToken");
 	    	
 	    	SOAPElement wsseUserNameElement = wsseUsernameToken.addChildElement("wsse","Username");
 	    	wsseUserNameElement.setValue("username_1");
 	
 	    	SOAPElement wssePasswordElement = wsseUsernameToken.addChildElement("wsse","Username");
 	    	wssePasswordElement.setValue("password_1");
 	    	call.addHeader(wsseSecurityToken);
 		} catch (SOAPException e) {
 			e.printStackTrace();
 		}	
 	}

Estou recebendo o seguinte retorno do web service:

WSDoAllReceiver: Request does not contain required Security header

Se vc souber o jeito certo de se fazer, por favor me envie.

Agradeço desde já.
Obrigado.

Criado 10 de julho de 2006
Ultima resposta 13 de ago. de 2007
Respostas 1
Participantes 2