java - How can I add security header in message? -
i wanto built simple soap client in java call soap java web service. have import wsdl in project ad built client. if try run code, have erro:
avvertenza: unable find required classes (javax.activation.datahandler , javax.mail.internet.mimemultipart). attachment support disabled. axisfault faultcode: {http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}invalidsecurity faultsubcode: faultstring: error: no security header found in message faultactor: faultnode: faultdetail: {http://xml.apache.org/axis/}stacktrace:error: no security header found in message @ org.apache.axis.message.soapfaultbuilder.createfault(soapfaultbuilder.java:222) @ org.apache.axis.message.soapfaultbuilder.endelement(soapfaultbuilder.java:129) @ org.apache.axis.encoding.deserializationcontext.endelement(deserializationcontext.java:1087) @ com.sun.org.apache.xerces.internal.parsers.abstractsaxparser.endelement(abstractsaxparser.java:609) @ com.sun.org.apache.xerces.internal.impl.xmldocumentfragmentscannerimpl.scanendelement(xmldocumentfragmentscannerimpl.java:1782) @ com.sun.org.apache.xerces.internal.impl.xmldocumentfragmentscannerimpl$fragmentcontentdriver.next(xmldocumentfragmentscannerimpl.java:2973) @ com.sun.org.apache.xerces.internal.impl.xmldocumentscannerimpl.next(xmldocumentscannerimpl.java:606) @ com.sun.org.apache.xerces.internal.impl.xmlnsdocumentscannerimpl.next(xmlnsdocumentscannerimpl.java:117).........
the problem is:
error: no security header found in message
how can fixed problem?
edit::
this code thai use:
string keystorepath = "c:\\users\\michele.castriotta\\desktop\\certificati\\keystore_healthnetbr.jks"; fileinputstream = new fileinputstream(keystorepath); keystore keystore = keystore.getinstance(keystore.getdefaulttype()); keystore.load(is, "changeit".tochararray()); string alias = "edotto"; key key = keystore.getkey(alias, "changeit".tochararray()); if (key instanceof privatekey) { // certificate of public key certificate cert = keystore.getcertificate(alias); // public key publickey publickey = cert.getpublickey(); // return key pair new keypair(publickey, (privatekey) key); } attributiautorizzativi attributi = new attributiautorizzativi("getelencopaidomiciliare", "healthnetbr","ris000282"); elencopaidomiciliarerequest criterioricerca = new elencopaidomiciliarerequest(); criterioricerca.setdatainizioriferimento("01/12/2000"); criterioricerca.setdatafineriferimento("01/07/2015"); criterioricerca.setcodicenazionale("160114"); criterioricerca.settipologiaassistenzaautorizzata(0); criterioricerca.setdistretto("53"); getelencopaidomiciliare request = new getelencopaidomiciliare(); request.setcriteriricerca(criterioricerca); // pianoassistenzialeresidenzialeservice service = new pianoassistenzialeresidenzialeservicelocator(); pianoassistenzialeresidenziale stub = service.getpianoassistenzialeresidenzialeport(); pianoassistenzialeresidenzialeproxy client = new pianoassistenzialeresidenzialeproxy(); client.getelencopaidomiciliare(request, attributi); system.out.println("done");
if developing client axis2 can use rampart, if not, can add wsse headers creating , adding elements manually
soapheader header = context.getmessage().getsoappart().getenvelope().addheader(); header.addchildelement(securitysoapelement);
or can use wss4j (best choice)
Comments
Post a Comment