RE: Fallo con WebServices Security
"pepegamba09" <pepegamba09-/[email protected]>
| Newsgroups | gmane.comp.java.javaspain |
|---|---|
| Message-ID | <[email protected]> |
Buenos días. Tenés "java -Daxis.clientConfigFile ... ", y el nombre de la property es ClientConfigFile, con mayúscula. No estoy seguro de que sea eso, pero arreglalo para descartarlo. --- En [email protected], "Ignacio Elorriaga" <charlybro@...> escribió: > > Holaa a todo el mundo. > > Bueno a ver si alguien sabe sobre WebServices Security en Java, que me trae > ya por el camino de la amargura estas ultimas semanas. > A ver si algun paso(lo hago mal) o algo tngo mal configurado, porque yo ya > no se que le pasa. > Segun los ejemplos que trae la web oficial de apache, tengo un > WS(StockQuoteService) al cual le voy a meter la seguridad de UsernameToken. > Desde ya muchas gracias a quien responda, porque estoy ppffff > > > Lo que hago es(con el tomcat inciado y desplegada una carpeta axis donde > meto todo): > > 1.- tengo el server-config.wsdd en el directorio WEB-INF, tal que: > > <service name="stock-wss-01" provider="java:RPC" style="document" > use="literal"> > <requestFlow> > <handler type="java:org.apache.ws.axis.security.WSDoAllReceiver"> > <parameter name="passwordCallbackClass" value=" > samples.stock.client.PWCallback"/> > <parameter name="action" value="UsernameToken"/> > </handler> > </requestFlow> > <parameter name="allowedMethods" value="getQuote"/> > <parameter name="className" value="samples.stock.client.StockQuoteService > "/> > <parameter name="scope" value="application"/> > </service> > > > 2.- Hago un deploy del Servicio Web, con: > java -cp %AXISCLASSPATH% > org.apache.axis.client.AdminClient-lhttp://localhost:8080/axis/services/AdminService > server-config.wsdd > > 3.- Me genero las clases del cliente con WSDL2Java: > java -cp %AXISCLASSPATH% org.apache.axis.wsdl.WSDL2Java -o . > -Nhttp://localhost:8080/axis/services/stock-wss-01 samples.stock.client > http://localhost:8080/axis/services/stock-wss-01?wsdl > > 4.-Me genero el PWCallback, donde le indico el usuario que tiene que entrar > y la pass que le pondre. > > public class PWCallback implements CallbackHandler { > public void handle(Callback[] callbacks) > throws IOException, UnsupportedCallbackException { > for (int i = 0; i < callbacks.length; i++) { > if (callbacks[i] instanceof WSPasswordCallback) { > WSPasswordCallback pc = (WSPasswordCallback) callbacks[i]; > > // set the password given a username > if ("carlos".equals(pc.getIdentifer())) { > pc.setPassword("pepe"); > } > } else { > throw new UnsupportedCallbackException(callbacks[i], > "Unrecognized Callback"); > } > } > } > > > 5.- Me genero el client_deploy.wsdd tal que: > > <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java=" > http://xml.apache.org/axis/wsdd/providers/java"> > <transport name="http" pivot="java:org.apache.axis.transport.http.HTTPSender > "/> > <globalConfiguration > > <requestFlow > > <handler type="java:org.apache.ws.axis.security.WSDoAllSender" > > <parameter name="action" value="UsernameToken"/> > <parameter name="user" value="carlos"/> > <parameter name="passwordCallbackClass" value=" > samples.stock.client.PWCallback"/> > <parameter name="passwordType" value="PasswordText"/> > </handler> > </requestFlow > > </globalConfiguration > > </deployment> > > > 6.- Ejecuto mi clase de prueba del cliente, tal que: > java -Daxis.clientConfigFile=client_deploy.wsdd -cp %AXISCLASSPATH% > samples.stock.client.StockServiceClient TBS > > y me da un error que dice: > > *Exception in thread "main" AxisFault > faultCode: { > http://schemas.xmlsoap.org/soap/envelope/}Server.generalException > faultSubcode: > faultString: WSDoAllReceiver: Request does not contain required Security > header > faultActor: > faultNode: > faultDetail: > {http://xml.apache.org/axis/}hostname:zaz-elorriagai > > WSDoAllReceiver: Request does not contain required Security header > at org.apache.axis.message.SOAPFaultBuilder.createFault( > SOAPFaultBuilder.java:222) > at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java > :129) > at org.apache.axis.encoding.DeserializationContext.endElement > (DeserializationContex > t.java:1087) > at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown > Source) > at > com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndEl > ement(Unknown Source) > at > com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown > Source) > at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown > Source) > at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown > Source) > at > com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocum > ent(Unknown Source) > at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown > Source) > at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown > Source) > at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown > Source) > at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown > Source) > at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown > Source) > at javax.xml.parsers.SAXParser.parse(Unknown Source) > at org.apache.axis.encoding.DeserializationContext.parse( > DeserializationContext.jav > a:227) > at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696) > at org.apache.axis.Message.getSOAPEnvelope(Message.java:435) > at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke > (MustUnderstandChecker > .java:62) > at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206) > at org.apache.axis.client.Call.invokeEngine(Call.java:2784) > at org.apache.axis.client.Call.invoke(Call.java:2767) > at org.apache.axis.client.Call.invoke(Call.java:2443) > at org.apache.axis.client.Call.invoke(Call.java:2366) > at org.apache.axis.client.Call.invoke(Call.java:1812) > at samples.stock.client.StockWss01SoapBindingStub.getQuote > (StockWss01SoapBindingStu > b.java:106) > at samples.stock.client.StockServiceClient.main(StockServiceClient.java:15) > > > > **Saludosss y muchas gracias por adelantado* >