Return-Path: X-Original-To: apmail-axis-java-dev-archive@www.apache.org Delivered-To: apmail-axis-java-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 2D744D11A for ; Fri, 28 Sep 2012 02:59:04 +0000 (UTC) Received: (qmail 41484 invoked by uid 500); 28 Sep 2012 02:59:03 -0000 Delivered-To: apmail-axis-java-dev-archive@axis.apache.org Received: (qmail 41370 invoked by uid 500); 28 Sep 2012 02:59:03 -0000 Mailing-List: contact java-dev-help@axis.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: java-dev@axis.apache.org Delivered-To: mailing list java-dev@axis.apache.org Received: (qmail 41361 invoked by uid 99); 28 Sep 2012 02:59:03 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 28 Sep 2012 02:59:03 +0000 X-ASF-Spam-Status: No, hits=2.2 required=5.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_NONE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of mgainty@hotmail.com designates 65.55.116.79 as permitted sender) Received: from [65.55.116.79] (HELO blu0-omc3-s4.blu0.hotmail.com) (65.55.116.79) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 28 Sep 2012 02:58:55 +0000 Received: from BLU142-W11 ([65.55.116.72]) by blu0-omc3-s4.blu0.hotmail.com with Microsoft SMTPSVC(6.0.3790.4675); Thu, 27 Sep 2012 19:58:33 -0700 Message-ID: Content-Type: multipart/alternative; boundary="_372773bd-afc3-449a-85d8-2c4ff605a2e6_" X-Originating-IP: [74.104.173.229] From: Martin Gainty To: "java-dev@axis.apache.org" Subject: RE: No headers in response Date: Thu, 27 Sep 2012 22:58:33 -0400 Importance: Normal In-Reply-To: <006601cd9d05$6c8d2880$45a77980$@lampreynetworks.com> References: <00a701cd9ca4$259edbf0$70dc93d0$@lampreynetworks.com> ,<006601cd9d05$6c8d2880$45a77980$@lampreynetworks.com> MIME-Version: 1.0 X-OriginalArrivalTime: 28 Sep 2012 02:58:33.0831 (UTC) FILETIME=[25DE9F70:01CD9D25] --_372773bd-afc3-449a-85d8-2c4ff605a2e6_ Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable try it like this MessageContext ctx =3D getMsgCtx12()=3B //none of these tests contain mustUnderstand attribute so we will need to r= econstruct our mustUnderstand later on String policyXml =3D "test-resources/policy/rampart-asymm-binding-6= -3des-r15.xml"=3B Policy policy =3D loadPolicy(policyXml)=3B ctx.setProperty(RampartMessageData.KEY_RAMPART_POLICY=2C policy)=3B MessageBuilder builder =3D new MessageBuilder()=3B builder.build(ctx)=3B // Building the SOAP envelope from the OMElement buildSOAPEnvelope(ctx)=3B RampartEngine engine =3D new RampartEngine()=3B List results =3D eng= ine.process(ctx)=3B MG>notice that inside org.apache.rampart.MessageBuilder we have=20 RampartMessageData build() method *which has access to the security=20 Headers* public void build(MessageContext msgCtx) throws WSSPolicyException=2C RampartException=2C WSSecurityException=2C AxisFault { Axis2Util.useDOOM(true)=3B RampartMessageData rmd =3D new RampartMessageData(msgCtx=2C true)= =3B =20 =20 RampartPolicyData rpd =3D rmd.getPolicyData()=3B if(rpd =3D=3D null || isSecurityValidationFault(msgCtx) ||=20 !RampartUtil.isSecHeaderRequired(rpd=2C rmd.isInitiator()= =2Cfalse)) { =20 Document doc =3D rmd.getDocument()=3B WSSecHeader secHeader =3D rmd.getSecHeader()=3B MG>start mods... check here to make sure mustUnderstand is turned = on=20 if(secHeader!=3Dnull) && (secHeader.getMustUnderstand()=3D=3Dtru= e) { MG>normal } else { MG>remove the bad one =2Creconstruct WSSecHeader and add to RampartMessageD= ata if ( secHeader !=3D null ) { secHeader.removeSecurityHeader(doc)=3B } secHeader =3D new WSSecHeader("actor"=2Ctrue)=3B rmd.setSecHeader(secHeader)=3B =20 } MG>end mods MG return=3B } =20 //Copy the RECV_RESULTS if available if(!rmd.isInitiator()) { OperationContext opCtx =3D msgCtx.getOperationContext()=3B MessageContext inMsgCtx=3B if(opCtx !=3D null &&=20 (inMsgCtx =3D opCtx.getMessageContext(WSDLConstants.MES= SAGE_LABEL_IN_VALUE)) !=3D null) { msgCtx.setProperty(WSHandlerConstants.RECV_RESULTS=2C=20 inMsgCtx.getProperty(WSHandlerConstants.RECV_RESULT= S))=3B } } =20 =20 String isCancelreq =3D (String)msgCtx.getProperty(RampartMessageDat= a.CANCEL_REQUEST)=3B if(isCancelreq !=3D null && Constants.VALUE_TRUE.equals(isCancelreq= )) { try { =20 String cancelAction =3D TrustUtil.getWSTNamespace(rmd.getWs= tVersion()) + RahasConstants.RST_ACTION_CANCEL_SCT=3B //Set action msgCtx.getOptions().setAction(cancelAction)=3B =20 //Change the wsa:Action header String wsaNs =3D Final.WSA_NAMESPACE=3B Object addressingVersionFromCurrentMsgCtxt =3D msgCtx.getPr= operty(AddressingConstants.WS_ADDRESSING_VERSION)=3B if (Submission.WSA_NAMESPACE.equals(addressingVersionFromCu= rrentMsgCtxt)) { wsaNs =3D Submission.WSA_NAMESPACE=3B } OMElement header =3D msgCtx.getEnvelope().getHeader()=3B if(header !=3D null) { OMElement actionElem =3D header.getFirstChildWithName(n= ew QName(wsaNs=2C AddressingConstants.WSA_ACTION))=3B if(actionElem !=3D null) { actionElem.setText(cancelAction)=3B } } =20 //set payload to a cancel request String ctxIdKey =3D RampartUtil.getContextIdentifierKey(msg= Ctx)=3B String tokenId =3D (String)RampartUtil.getContextMap(msgCtx= ).get(ctxIdKey)=3B =20 if(tokenId !=3D null && RampartUtil.isTokenValid(rmd=2C tok= enId)) { OMElement bodyElem =3D msgCtx.getEnvelope().getBody()= =3B OMElement child =3D bodyElem.getFirstElement()=3B SecurityContextToken sct =3D new SecurityContextToken( (Element) rmd.getTokenStorage().getToken(tokenI= d) .getToken())=3B OMElement newChild =3D TrustUtil.createCancelRequest(sc= t .getIdentifier()=2C rmd.getWstVersion())=3B Element newDomChild =3D XMLUtils.toDOM(newChild)=3B Node importedNode =3D rmd.getDocument().importNode((Ele= ment) newDomChild=2C true)=3B ((Element) bodyElem).replaceChild(importedNode=2C (Elem= ent) child)=3B } else { throw new RampartException("tokenToBeCancelledInvalid")= =3B } =20 } catch (Exception e) { e.printStackTrace()=3B throw new RampartException("errorInTokenCancellation")=3B } } =20 if(rpd.isTransportBinding()) { log.debug("Building transport binding")=3B TransportBindingBuilder building =3D new TransportBindingBuilder= ()=3B building.build(rmd)=3B } else if(rpd.isSymmetricBinding()) { log.debug("Building SymmetricBinding")=3B SymmetricBindingBuilder builder =3D new SymmetricBindingBuilder(= )=3B builder.build(rmd)=3B } else { AsymmetricBindingBuilder builder =3D new AsymmetricBindingBuild= er()=3B builder.build(rmd)=3B } =20 //TODO remove following check=2C we don't need this check here as we= do a check to see whether=20 // security header required=20 =20 Document doc =3D rmd.getDocument()=3B WSSecHeader secHeader =3D rmd.getSecHeader()=3B =20 if ( secHeader !=3D null && secHeader.isEmpty(doc) ) { secHeader.removeSecurityHeader(doc)=3B } got /* * Checking whether MTOMSerializable is there. If so set optimizeEle= ment. * */ if(rpd.isMTOMSerialize()){ msgCtx.setProperty(Constants.Configuration.ENABLE_MTOM=2C Const= ants.VALUE_TRUE)=3B OptimizePartsConfig config=3D rpd.getOptimizePartsConfig()=3B if(config !=3D null){ MessageOptimizer.optimize(msgCtx.getEnvelope()=2C config.ge= tExpressions()=2C config.getNamespaces())=3B } } } //end RampartMessageData build method // download wss4j and and make mod to low access to mustunderstand // http://ws.apache.org/wss4j/source-repository.html public class WSSecHeader { private String actor =3D null=3B private boolean mustunderstand =3D true=3B //accessor that werner forgot public boolean getMustUnderstand() { return this.mustunderstand=3B } ... } compile and package with maven pom.xml Martin Gainty=20 ______________________________________________=20 Jogi =E9s Bizalmass=E1gi kinyilatkoztat=E1s/Verzicht und Vertraulichkeitanm= erkung/Note de d=E9ni et de confidentialit=E9 Ez az =FCzenet bizalmas. Ha nem =F6n az akinek sz=E1nva volt=2C akkor k=E9rj=FCk= =2C hogy jelentse azt nek=FCnk vissza. Semmif=E9le tov=E1bb=EDt=E1sa vagy m=E1solat= =E1nak k=E9sz=EDt=E9se nem megengedett. Ez az =FCzenet csak ismeret cser=E9t szol= g=E1l =E9s semmif=E9le jogi alkalmazhat=F3s=E1ga sincs. Mivel az electronikus =FCzene= tek k=F6nnyen megv=E1ltoztathat=F3ak=2C ez=E9rt minket semmi felel=F6s=E9g nem = terhelhet ezen =FCzenet tartalma miatt. Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene Empfaeng= er sein=2C so bitten wir hoeflich um eine Mitteilung. Jede unbefugte Weiter= leitung oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht dient l= ediglich dem Austausch von Informationen und entfaltet keine rechtliche Bin= dungswirkung. Aufgrund der leichten Manipulierbarkeit von E-Mails koennen w= ir keine Haftung fuer den Inhalt uebernehmen. Ce message est confidentiel et peut =EAtre privil=E9gi=E9. Si vous n'=EAtes= pas le destinataire pr=E9vu=2C nous te demandons avec bont=E9 que pour sat= isfaire informez l'exp=E9diteur. N'importe quelle diffusion non autoris=E9e= ou la copie de ceci est interdite. Ce message sert =E0 l'information seule= ment et n'aura pas n'importe quel effet l=E9galement obligatoire. =C9tant d= onn=E9 que les email peuvent facilement =EAtre sujets =E0 la manipulation= =2C nous ne pouvons accepter aucune responsabilit=E9 pour le contenu fourni= . From: brianreinhold@lampreynetworks.com To: java-dev@axis.apache.org Subject: RE: No headers in response Date: Thu=2C 27 Sep 2012 19:11:27 -0400 Martin=2C I tried that as well and the response still came back with no hea= ders. Somehow the STS service manages to get a header in the response (miss= ing must understand in the addressing)=3B but it=92s a start. Brian From: = Martin Gainty [mailto:mgainty@hotmail.com]=20 Sent: Thursday=2C September 27=2C 2012 9:30 AM To: java-dev@axis.apache.org Subject: RE: No headers in response Hi Brian i'll take the last question.. from axis2.xml i assume you have included opt= ional Headers axis2.xml contains: true run this test where axis2-IncludeOptionalHeadersTrue.xml contains true =20 //now run the TestCase org.apache.axis2.handlers.addressing.AddressingOutHa= ndlerTest.java: java.io.File configFile =3D new java.io.File(System.getProperty("ba= sedir"=2C".") + "/test-resources/axis2-IncludeOptionalHeadersTrue.xml")=3B org.apache.axis2.context.ConfigurationContext cfgCtx =3Dorg.apache.= axis2.context.ConfigurationContextFactory.createConfigurationContextFromFil= eSystem("target/test-classes"=2CconfigFile.getAbsolutePath())=3B //true in addressing= module should now be true msgCtxt =3D cfgCtx.createMessageContext()=3B msgCtxt.setEnvelope(OMAbstractFactory.getSOAP11Factory().getDefault= Envelope())=3B msgCtxt.setTo(new EndpointReference("http://www.to.org/service/"))= =3B msgCtxt.setFrom(new EndpointReference("http://www.from.org/service/= "))=3B msgCtxt.setReplyTo(new EndpointReference("http://www.replyTo.org/se= rvice/"))=3B msgCtxt.setFaultTo(new EndpointReference("http://www.faultTo.org/se= rvice/"))=3B msgCtxt.setWSAAction("http://www.actions.org/action")=3B msgCtxt.setMessageID("123456-7890")=3B msgCtxt.addRelatesTo(new RelatesTo("http://www.relatesTo.org/servic= e/"))=3B msgCtxt.setProperty(WS_ADDRESSING_VERSION=2C Final.WSA_NAMESPACE)= =3B =20 outHandler.invoke(msgCtxt)=3B org.custommonkey.xmlunit.XMLUnit.setIgnoreWhitespace(true)=3B assertXMLEqual(msgCtxt.getEnvelope().toString()=2C org.apache.axis2= .handlers.util.TestUtil.getOMBuilder("withOptionalHeadersTest.xml").getDocu= mentElement().toString())=3B =20 //msgCtxt.getEnvelope().toString() should be IDENTICAL to contents of withO= ptionalHeadersTest.xml shown here http://www.to.org/service/ http://www.from.org/service/ http://www.replyTo.org/service/ http://www.faultTo.org/service/ http://www.actions.org/action 123456-7890 http://www.relatesTo.org/service/ is this not the case? Martin Gainty=20 ______________________________________________=20 Verzicht und Vertraulichkeitanmerkung/Note de d=E9ni et de confidentialit= =E9 Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene Empfaeng= er sein=2C so bitten wir hoeflich um eine Mitteilung. Jede unbefugte Weiter= leitung oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht dient l= ediglich dem Austausch von Informationen und entfaltet keine rechtliche Bin= dungswirkung. Aufgrund der leichten Manipulierbarkeit von E-Mails koennen w= ir keine Haftung fuer den Inhalt uebernehmen.Ce message est confidentiel et= peut =EAtre privil=E9gi=E9. Si vous n'=EAtes pas le destinataire pr=E9vu= =2C nous te demandons avec bont=E9 que pour satisfaire informez l'exp=E9dit= eur. N'importe quelle diffusion non autoris=E9e ou la copie de ceci est int= erdite. Ce message sert =E0 l'information seulement et n'aura pas n'importe= quel effet l=E9galement obligatoire. =C9tant donn=E9 que les email peuvent= facilement =EAtre sujets =E0 la manipulation=2C nous ne pouvons accepter a= ucune responsabilit=E9 pour le contenu fourni. From: brianreinhold@lampreynetworks.com To: java-dev@axis.apache.org Subject: No headers in response Date: Thu=2C 27 Sep 2012 07:35:07 -0400 I am re-opening a question I saw no= answer to asked in this forum quite a while ago. In the STS service reque= sting a SMAL20 token the response is okay.But in the service that needs to = have the SAML20 token=2C the response has no headers at all. This is in spi= te of the must understand setting in the client headers in both the address= ing and security part. Everything is 1.6.2=3B rampart=2C axis2=2C and axiom= is 1.2.14. Adding the true in the service.xml does not help (though that is what I used progr= ammatically on the client side to generate the correct addressing headers).= Is this a bug or what am I doing wrong in the configuration? Thanks=2C Bria= n ReinholdNo virus found in this message. Checked by AVG - www.avg.com Version: 2012.0.2221 / Virus Database: 2441/5294 - Release Date: 09/27/12No= virus found in this message. Checked by AVG - www.avg.com Version: 2012.0.2221 / Virus Database: 2441/5294 - Release Date: 09/27/12 = = --_372773bd-afc3-449a-85d8-2c4ff605a2e6_ Content-Type: text/html; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable
try it like this
 =3B  =3B  =3B  =3B =3B MessageContext ctx =3D getMsgCt= x12()=3B

//none of these tests contain mustUnderstand attribute so we will need to r= econstruct our mustUnderstand later on
 =3B =3B =3B =3B =3B =3B =3B String policyXml = =3D "test-resources/policy/rampart-asymm-binding-6-3des-r15.xml"=3B
 =3B =3B =3B =3B =3B =3B =3B Policy policy =3D = loadPolicy(policyXml)=3B

 =3B =3B =3B =3B =3B =3B =3B ctx.setProperty(Ra= mpartMessageData.KEY_RAMPART_POLICY=2C policy)=3B

 =3B =3B =3B =3B =3B =3B =3B MessageBuilder bui= lder =3D new MessageBuilder()=3B
 =3B =3B =3B =3B =3B =3B =3B builder.build(ctx)= =3B

 =3B =3B =3B =3B =3B =3B =3B // Building the SO= AP envelope from the OMElement
 =3B =3B =3B =3B =3B =3B =3B buildSOAPEnvelope(= ctx)=3B

 =3B =3B =3B =3B =3B =3B =3B RampartEngine engi= ne =3D new RampartEngine()=3B
 =3B =3B =3B =3B =3B =3B =3B List<=3Borg.apac= he.ws.security.WSSecurityEngineResult>=3B results =3D engine.process(ctx)= =3B

MG>=3Bnotice that inside org.apache.rampart.MessageBuilder we have=20 RampartMessageData build() method *which has access to the security=20 Headers*

 =3B public void build(MessageContext msgCtx) throws WSSPolicyException= =2C
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B RampartException=2C WSSecurityException=2C AxisFault {
 =3B =3B =3B =3B =3B =3B =3B Axis2Util.useDOOM(= true)=3B
 =3B =3B =3B =3B =3B =3B =3B RampartMessageData= rmd =3D new RampartMessageData(msgCtx=2C true)=3B
 =3B =3B =3B =3B =3B =3B =3B
 =3B =3B =3B =3B =3B =3B =3B
 =3B =3B =3B =3B =3B =3B =3B RampartPolicyData = rpd =3D rmd.getPolicyData()=3B
 =3B =3B =3B =3B =3B =3B =3B if(rpd =3D=3D null= || isSecurityValidationFault(msgCtx) ||
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B !RampartUtil.isSecHeaderRequi= red(rpd=2C rmd.isInitiator()=2Cfalse)) {
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B Document doc =3D rmd.getDocument()=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B WSSecHeader secHeader =3D rmd.getSecHeader()=3B
MG>=3Bstart mods...  =3B =3B =3B =3B =3B =3B = =3B check here to make sure mustUnderstand is turned =3B on
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B if(secHeader!=3Dnull) &=3B&=3B (secHeader.getMustUnderstand()= =3D=3Dtrue)
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B {
MG>=3Bnormal
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B }
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B else
{
MG>=3Bremove the bad one =2Creconstruct WSSecHeader and add to RampartMes= sageData
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B if ( secHeader !=3D null ) {
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B secHeader.removeSecurityHeade= r(doc)=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B }
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B secHeader =3D new WSSecHeader("actor"=2Ctrue)=3B
 =3B  =3B  =3B  =3B  =3B =3B rmd.setSecHeader(secHe= ader)=3B  =3B =3B
 =3B =3B =3B =3B =3B }
MG>=3Bend mods MG

 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B return=3B
 =3B =3B =3B =3B =3B =3B =3B }
 =3B =3B =3B =3B =3B =3B =3B
 =3B =3B =3B =3B =3B =3B =3B //Copy the RECV_RE= SULTS if available
 =3B =3B =3B =3B =3B =3B =3B if(!rmd.isInitiato= r()) {
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B OperationContext opCtx =3D msgCtx.getOperationContext()=3B  =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B MessageContext inMsgCtx=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B if(opCtx !=3D null &=3B&=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B =3B =3B =3B = =3B (inMsgCtx =3D opCtx.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VA= LUE)) !=3D null) {
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B msgCtx.setProperty(WSHandlerC= onstants.RECV_RESULTS=2C
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B =3B =3B =3B = =3B =3B =3B =3B =3B inMsgCtx.getProperty(WSHandlerConstants= .RECV_RESULTS))=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B }
 =3B =3B =3B =3B =3B =3B =3B }
 =3B =3B =3B =3B =3B =3B =3B
 =3B =3B =3B =3B =3B =3B =3B
 =3B =3B =3B =3B =3B =3B =3B String isCancelreq= =3D (String)msgCtx.getProperty(RampartMessageData.CANCEL_REQUEST)=3B
 =3B =3B =3B =3B =3B =3B =3B if(isCancelreq != =3D null &=3B&=3B Constants.VALUE_TRUE.equals(isCancelreq)) {
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B try {
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B String cancelAction =3D Trust= Util.getWSTNamespace(rmd.getWstVersion()) + RahasConstants.RST_ACTION_CANCE= L_SCT=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B //Set action
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B msgCtx.getOptions().setAction= (cancelAction)=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B //Change the wsa:Action heade= r
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B String wsaNs =3D Final.WSA_NA= MESPACE=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B Object addressingVersionFromC= urrentMsgCtxt =3D msgCtx.getProperty(AddressingConstants.WS_ADDRESSING_VERS= ION)=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B if (Submission.WSA_NAMESPACE.= equals(addressingVersionFromCurrentMsgCtxt)) {
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B =3B =3B =3B = =3B wsaNs =3D Submission.WSA_NAMESPACE=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B }
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B OMElement header =3D msgCtx.g= etEnvelope().getHeader()=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B if(header !=3D null) {
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B =3B =3B =3B = =3B OMElement actionElem =3D header.getFirstChildWithName(new QName(wsaNs= =2C AddressingConstants.WSA_ACTION))=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B =3B =3B =3B = =3B if(actionElem !=3D null) {
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B =3B =3B =3B = =3B =3B =3B =3B =3B actionElem.setText(cancelAction)=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B =3B =3B =3B = =3B }
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B }
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B //set payload to a cancel req= uest
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B String ctxIdKey =3D RampartUt= il.getContextIdentifierKey(msgCtx)=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B String tokenId =3D (String)Ra= mpartUtil.getContextMap(msgCtx).get(ctxIdKey)=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B if(tokenId !=3D null &=3B&= amp=3B RampartUtil.isTokenValid(rmd=2C tokenId)) {
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B =3B =3B =3B = =3B OMElement bodyElem =3D msgCtx.getEnvelope().getBody()=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B =3B =3B =3B = =3B OMElement child =3D bodyElem.getFirstElement()=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B =3B =3B =3B = =3B SecurityContextToken sct =3D new SecurityContextToken(
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B =3B =3B =3B = =3B =3B =3B =3B =3B =3B =3B =3B =3B (Elemen= t) rmd.getTokenStorage().getToken(tokenId)
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B =3B =3B =3B = =3B =3B =3B =3B =3B =3B =3B =3B =3B =3B=  =3B =3B =3B =3B =3B =3B =3B .getToken())=3B  =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B =3B =3B =3B = =3B OMElement newChild =3D TrustUtil.createCancelRequest(sct
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B =3B =3B =3B = =3B =3B =3B =3B =3B =3B =3B =3B =3B .getIde= ntifier()=2C rmd.getWstVersion())=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B =3B =3B =3B = =3B Element newDomChild =3D XMLUtils.toDOM(newChild)=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B =3B =3B =3B = =3B Node importedNode =3D rmd.getDocument().importNode((Element) newDomChil= d=2C true)=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B =3B =3B =3B = =3B ((Element) bodyElem).replaceChild(importedNode=2C (Element) child)=3B  =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B } else {
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B =3B =3B =3B = =3B throw new RampartException("tokenToBeCancelledInvalid")=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B }
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B } catch (Exception e) {
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B e.printStackTrace()=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B throw new RampartException("e= rrorInTokenCancellation")=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B }
 =3B =3B =3B =3B =3B =3B =3B }
 =3B =3B =3B =3B =3B =3B =3B
 =3B =3B =3B =3B =3B =3B if(rpd.isTransportBinding(= )) {
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B log.debug("Building transport binding")=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B TransportBindingBuilder building =3D new TransportBindingBuilder()=3B=
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B building.build(rmd)=3B
 =3B =3B =3B =3B =3B =3B =3B } else if(rpd.isSy= mmetricBinding()) {
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B log.debug("Building SymmetricBinding")=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B SymmetricBindingBuilder builder =3D new SymmetricBindingBuilder()=3B<= br>  =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B builder.build(rmd)=3B
 =3B =3B =3B =3B =3B =3B =3B } else {
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B AsymmetricBindingBuilder builder =3D new AsymmetricBindingBui= lder()=3B
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B builder.build(rmd)=3B
 =3B =3B =3B =3B =3B =3B =3B }
 =3B =3B =3B =3B =3B =3B
 =3B =3B =3B =3B =3B =3B //TODO remove following ch= eck=2C we don't need this check here as we do a check to see whether
 =3B =3B =3B =3B =3B =3B // security header require= d
 =3B =3B =3B =3B =3B =3B
 =3B =3B =3B =3B =3B =3B Document doc =3D rmd.getDo= cument()=3B
 =3B =3B =3B =3B =3B =3B WSSecHeader secHeader =3D = rmd.getSecHeader()=3B
 =3B =3B =3B =3B =3B =3B
 =3B =3B =3B =3B =3B =3B if ( secHeader !=3D null &= amp=3B&=3B secHeader.isEmpty(doc) ) {
 =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B secHeader.removeSecurityHeader(doc)=3B
 =3B =3B =3B =3B =3B =3B }
 =3B =3B =3B =3B =3B =3B =3B got

 =3B =3B =3B =3B =3B =3B /*
 =3B =3B =3B =3B =3B =3B =3B * Checking whether= MTOMSerializable is there. If so set optimizeElement.
 =3B =3B =3B =3B =3B =3B =3B * */
 =3B =3B =3B =3B =3B =3B =3B if(rpd.isMTOMSeria= lize()){
 =3B =3B =3B =3B =3B =3B =3B  =3B =3B&n= bsp=3B msgCtx.setProperty(Constants.Configuration.ENABLE_MTOM=2C Constants.= VALUE_TRUE)=3B
 =3B =3B =3B =3B =3B =3B =3B  =3B =3B&n= bsp=3B OptimizePartsConfig config=3D rpd.getOptimizePartsConfig()=3B
 =3B =3B =3B =3B =3B =3B =3B  =3B =3B&n= bsp=3B if(config !=3D null){
 =3B =3B =3B =3B =3B =3B =3B  =3B =3B&n= bsp=3B  =3B =3B =3B MessageOptimizer.optimize(msgCtx.getEnvelop= e()=2C config.getExpressions()=2C config.getNamespaces())=3B
 =3B =3B =3B =3B =3B =3B =3B  =3B =3B&n= bsp=3B }
 =3B =3B =3B =3B =3B =3B =3B }
 =3B =3B =3B }
//end RampartMessageData build method

// download wss4j and and make mod to low access to mustunderstand
// http://ws.apache.org/wss4j/source-repository.html
public class WSSecHeader {
 =3B =3B =3B private String actor =3D null=3B

 =3B =3B =3B private boolean mustunderstand =3D true=3B
//accessor that werner forgot
 =3B =3B =3B public boolean getMustUnderstand() { return this.m= ustunderstand=3B }
...
}
compile and package with maven pom.xml

Martin Gainty
______________________________________________
Jo= gi =E9s Bizalmass=E1gi kinyilatkoztat=E1s/Verzicht und Vertraulichkeitanmer= kung/Note de d=E9ni et de confidentialit=E9
 =3B
Ez a= z =FCzenet bizalmas.  =3BHa nem =F6n az akinek sz=E1nva volt=2C akkor k= =E9rj=FCk=2C hogy jelentse azt nek=FCnk vissza. Semmif=E9le tov=E1bb=EDt=E1sa vagy m=E1solat= =E1nak k=E9sz=EDt=E9se nem megengedett.  =3BEz az =FCzenet csak ismeret cser= =E9t szolg=E1l =E9s semmif=E9le jogi alkalmazhat=F3s=E1ga sincs.  =3BMivel az electronikus = =FCzenetek k=F6nnyen megv=E1ltoztathat=F3ak=2C ez=E9rt minket semmi felel=F6s=E9g nem = terhelhet ezen =FCzenet tartalma miatt.

Diese Nachricht ist vertraulich. Sollt= en Sie nicht der vorgesehene Empfaenger sein=2C so bitten wir hoeflich um e= ine Mitteilung. Jede unbefugte Weiterleitung oder Fertigung einer Kopie ist= unzulaessig. Diese Nachricht dient lediglich dem Austausch von Information= en und entfaltet keine rechtliche Bindungswirkung. Aufgrund der leichten Ma= nipulierbarkeit von E-Mails koennen wir keine Haftung fuer den Inhalt ueber= nehmen.
Ce message est confidentiel et peut =EAtre privil=E9g=
i=E9. Si vous n'=EAtes pas le destinataire pr=E9vu=2C nous te demandons ave=
c bont=E9 que pour satisfaire informez l'exp=E9diteur. N'importe quelle dif=
fusion non autoris=E9e ou la copie de ceci est interdite. Ce message sert =
=E0 l'information seulement et n'aura pas n'importe quel effet l=E9galement=
 obligatoire. =C9tant donn=E9 que les email peuvent facilement =EAtre sujet=
s =E0 la manipulation=2C nous ne pouvons accepter aucune responsabilit=E9 p=
our le contenu fourni.




From: brianreinhold@lampreynetworks.com
= To: java-dev@axis.apache.org
Subject: RE: No headers in response
Date= : Thu=2C 27 Sep 2012 19:11:27 -0400

Martin=2C

 =3B

I tried that as = well and the response still came back with no headers. Somehow the STS serv= ice manages to get a header in the response (missing must understand in the= addressing)=3B but it=92s a start.

 =3B

Brian

 =3B<= /p>

F= rom: Martin Gainty [mailto:mgainty@hotma= il.com]
Sent: Thursday=2C September 27=2C 2012 9:30 AM
To:= java-dev@axis.apache.org
Subject: RE: No headers in response=

 =3B

Hi Brian
i'll take the last qu= estion.. from axis2.xml i assume you have included optional Headers
axis= 2.xml contains:
 =3B<=3BmoduleConfig name=3D"addressing">=3B
=  =3B =3B =3B =3B =3B =3B =3B <=3Bparameter na= me=3D"includeOptionalHeaders">=3Btrue<=3B/parameter>=3B
 =3B&n= bsp=3B =3B <=3B/moduleConfig>=3B

run this test where
axis= 2-IncludeOptionalHeadersTrue.xml contains

<=3Baxisconfig name=3D"A= xisJava2.0">=3B
 =3B =3B =3B <=3B!-- Comment this to dis= able Addressing -->=3B
 =3B =3B =3B <=3Bmodule ref=3D"ad= dressing"/>=3B

 =3B =3B =3B <=3B!--Configuring modul= e =2C providing parameters for modules whether they refer or not-->=3B =3B =3B =3B <=3BmoduleConfig name=3D"addressing">=3B
&= nbsp=3B =3B =3B =3B =3B =3B =3B <=3Bparameter nam= e=3D"includeOptionalHeaders">=3Btrue<=3B/parameter>=3B
 =3B&nb= sp=3B =3B <=3B/moduleConfig>=3B
 =3B =3B =3B
&nb= sp=3B =3B =3B <=3B!-- =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D -->=3B
 =3B =3B =3B <=3B!= -- Phases =3B -->=3B
 =3B =3B =3B <=3B!-- =3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D -->=3B =3B =3B =3B <=3BphaseOrder type=3D"InFlow">=3B
 = =3B =3B =3B =3B =3B =3B =3B <=3B!-- =3B Syste= m predefined phases =3B =3B =3B =3B =3B =3B -->= =3B
 =3B =3B =3B =3B =3B =3B =3B <=3Bphase= name=3D"Transport">=3B
 =3B =3B =3B =3B =3B = =3B =3B =3B =3B =3B =3B <=3Bhandler name=3D"RequestUR= IBasedDispatcher"
 =3B =3B =3B =3B =3B =3B = =3B =3B =3B =3B =3B =3B =3B =3B =3B =3B=  =3B =3B =3B =3B class=3D"org.apache.axis2.dispatchers.Requ= estURIBasedDispatcher">=3B
 =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B =3B =3B =3B = =3B <=3Border phase=3D"Transport"/>=3B
 =3B =3B =3B = =3B =3B =3B =3B =3B =3B =3B =3B <=3B/handler&= gt=3B
 =3B =3B =3B =3B =3B =3B =3B =3B&n= bsp=3B =3B =3B <=3Bhandler name=3D"SOAPActionBasedDispatcher"
=  =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B =3B =3B =3B = =3B =3B class=3D"org.apache.axis2.dispatchers.SOAPActionBasedDispatcher= ">=3B
 =3B =3B =3B =3B =3B =3B =3B =3B=  =3B =3B =3B =3B =3B =3B =3B <=3Border phase= =3D"Transport"/>=3B
 =3B =3B =3B =3B =3B =3B&n= bsp=3B =3B =3B =3B =3B <=3B/handler>=3B
 =3B&nbs= p=3B =3B =3B =3B =3B =3B <=3B/phase>=3B
 =3B=  =3B =3B =3B =3B =3B =3B <=3Bphase name=3D"Addres= sing">=3B
 =3B =3B =3B =3B =3B =3B =3B&nbs= p=3B =3B =3B =3B <=3Bhandler name=3D"AddressingBasedDispatche= r"
 =3B =3B =3B =3B =3B =3B =3B =3B = =3B =3B =3B =3B =3B =3B =3B =3B =3B =3B=  =3B =3B class=3D"org.apache.axis2.dispatchers.AddressingBasedDispa= tcher">=3B
 =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B =3B =3B <=3Border p= hase=3D"Addressing"/>=3B
 =3B =3B =3B =3B =3B = =3B =3B =3B =3B =3B =3B <=3B/handler>=3B
 = =3B =3B =3B =3B =3B =3B =3B <=3B/phase>=3B
&= nbsp=3B =3B =3B =3B =3B =3B =3B <=3Bphase name=3D= "Security"/>=3B
 =3B =3B =3B =3B =3B =3B = =3B <=3Bphase name=3D"PreDispatch"/>=3B
 =3B =3B =3B&nbs= p=3B =3B =3B =3B <=3Bphase name=3D"Dispatch" class=3D"org.apa= che.axis2.engine.DispatchPhase">=3B
 =3B =3B =3B =3B&n= bsp=3B =3B =3B =3B =3B =3B =3B <=3Bhandler name= =3D"RequestURIBasedDispatcher"
 =3B =3B =3B =3B =3B&= nbsp=3B =3B =3B =3B =3B =3B =3B =3B =3B&nbs= p=3B =3B =3B =3B =3B =3B class=3D"org.apache.axis2.disp= atchers.RequestURIBasedDispatcher"/>=3B
 =3B =3B =3B = =3B =3B =3B =3B =3B =3B =3B =3B <=3Bhandler n= ame=3D"SOAPActionBasedDispatcher"
 =3B =3B =3B =3B = =3B =3B =3B =3B =3B =3B =3B =3B =3B =3B=  =3B =3B =3B =3B =3B =3B class=3D"org.apache.axis2.= dispatchers.SOAPActionBasedDispatcher"/>=3B
 =3B =3B =3B&n= bsp=3B =3B =3B =3B =3B =3B =3B =3B <=3Bhandle= r name=3D"RequestURIOperationDispatcher"
 =3B =3B =3B = =3B =3B =3B =3B =3B =3B =3B =3B =3B =3B=  =3B =3B =3B =3B =3B =3B =3B class=3D"org.apach= e.axis2.dispatchers.RequestURIOperationDispatcher"/>=3B
 =3B = =3B =3B =3B =3B =3B =3B =3B =3B =3B =3B= <=3Bhandler name=3D"SOAPMessageBodyBasedDispatcher"
 =3B =3B&= nbsp=3B =3B =3B =3B =3B =3B =3B =3B =3B&nbs= p=3B =3B =3B =3B =3B =3B =3B =3B =3B class= =3D"org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>=3B
=  =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B <=3Bhandler name=3D"HTTPLocationBasedDispatcher"
 = =3B =3B =3B =3B =3B =3B =3B =3B =3B =3B=  =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B class=3D"org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/&g= t=3B
 =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B <=3Bhandler name=3D"GenericProviderDispatcher"
&= nbsp=3B =3B =3B =3B =3B =3B =3B =3B =3B&nbs= p=3B =3B =3B =3B =3B =3B =3B =3B =3B = =3B =3B class=3D"org.apache.axis2.jaxws.dispatchers.GenericProviderDisp= atcher"/>=3B
 =3B =3B =3B =3B =3B =3B =3B&= nbsp=3B =3B =3B =3B <=3Bhandler name=3D"MustUnderstandValidat= ionDispatcher"
 =3B =3B =3B =3B =3B =3B =3B&= nbsp=3B =3B =3B =3B =3B =3B =3B =3B =3B&nbs= p=3B =3B =3B =3B class=3D"org.apache.axis2.jaxws.dispatchers.Mu= stUnderstandValidationDispatcher"/>=3B
 =3B =3B =3B = =3B =3B =3B =3B <=3B/phase>=3B
 =3B =3B =3B&= nbsp=3B =3B =3B =3B <=3Bphase name=3D"RMPhase"/>=3B
&nbs= p=3B =3B =3B =3B =3B =3B =3B <=3B!-- =3B Syst= em predefined phases =3B =3B =3B =3B =3B =3B -->= =3B
 =3B =3B =3B =3B =3B =3B =3B <=3B!--&n= bsp=3B =3B After Postdispatch phase module author or service author can= add any phase he want =3B =3B =3B =3B =3B -->=3B
=  =3B =3B =3B =3B =3B =3B =3B <=3Bphase name= =3D"OperationInPhase">=3B
 =3B =3B =3B =3B =3B&nbs= p=3B =3B =3B =3B =3B =3B <=3Bhandler name=3D"MustUnde= rstandChecker"
 =3B =3B =3B =3B =3B =3B =3B&= nbsp=3B =3B =3B =3B =3B =3B =3B =3B =3B&nbs= p=3B =3B =3B =3B class=3D"org.apache.axis2.jaxws.dispatchers.Mu= stUnderstandChecker">=3B
 =3B =3B =3B =3B =3B = =3B =3B =3B =3B =3B =3B =3B =3B =3B =3B= <=3Border phase=3D"OperationInPhase"/>=3B
 =3B =3B =3B&= nbsp=3B =3B =3B =3B =3B =3B =3B =3B <=3B/hand= ler>=3B
 =3B =3B =3B =3B =3B =3B =3B <= =3B/phase>=3B
 =3B =3B =3B =3B =3B =3B =3B= <=3Bphase name=3D"soapmonitorPhase"/>=3B
 =3B =3B =3B &= lt=3B/phaseOrder>=3B
 =3B =3B =3B <=3BphaseOrder type=3D= "OutFlow">=3B
 =3B =3B =3B =3B =3B =3B =3B= <=3B!-- =3B =3B =3B =3B =3B user can add his own pha= ses to this area =3B -->=3B
 =3B =3B =3B =3B = =3B =3B =3B <=3Bphase name=3D"soapmonitorPhase"/>=3B
 = =3B =3B =3B =3B =3B =3B =3B <=3Bphase name=3D"Ope= rationOutPhase"/>=3B
 =3B =3B =3B =3B =3B =3B&= nbsp=3B <=3B!--system predefined phase-->=3B
 =3B =3B = =3B =3B =3B =3B =3B <=3B!--these phase will run irrespect= ive of the service-->=3B
 =3B =3B =3B =3B =3B = =3B =3B <=3Bphase name=3D"RMPhase"/>=3B
 =3B =3B =3B=  =3B =3B =3B =3B <=3Bphase name=3D"PolicyDetermination"/&= gt=3B
 =3B =3B =3B =3B =3B =3B =3B <=3Bpha= se name=3D"MessageOut"/>=3B
 =3B =3B =3B =3B =3B&n= bsp=3B =3B <=3Bphase name=3D"Security"/>=3B
 =3B =3B&nbs= p=3B <=3B/phaseOrder>=3B
 =3B =3B =3B <=3BphaseOrder t= ype=3D"InFaultFlow">=3B
 =3B =3B =3B =3B =3B = =3B =3B <=3Bphase name=3D"Addressing">=3B
 =3B =3B = =3B =3B =3B =3B =3B =3B =3B =3B =3B <=3Bh= andler name=3D"AddressingBasedDispatcher"
 =3B =3B =3B = =3B =3B =3B =3B =3B =3B =3B =3B =3B =3B=  =3B =3B =3B =3B =3B =3B =3B class=3D"org.apach= e.axis2.dispatchers.AddressingBasedDispatcher">=3B
 =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B =3B =3B =3B = =3B =3B =3B =3B <=3Border phase=3D"Addressing"/>=3B
&nbs= p=3B =3B =3B =3B =3B =3B =3B =3B =3B = =3B =3B <=3B/handler>=3B
 =3B =3B =3B =3B = =3B =3B =3B <=3B/phase>=3B
 =3B =3B =3B =3B&= nbsp=3B =3B =3B <=3Bphase name=3D"Security"/>=3B
 =3B&nb= sp=3B =3B =3B =3B =3B =3B <=3Bphase name=3D"PreDispat= ch"/>=3B
 =3B =3B =3B =3B =3B =3B =3B <= =3Bphase name=3D"Dispatch" class=3D"org.apache.axis2.engine.DispatchPhase"&= gt=3B
 =3B =3B =3B =3B =3B =3B =3B =3B&n= bsp=3B =3B =3B <=3Bhandler name=3D"RequestURIBasedDispatcher"
=  =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B =3B =3B =3B = =3B =3B class=3D"org.apache.axis2.dispatchers.RequestURIBasedDispatcher= "/>=3B
 =3B =3B =3B =3B =3B =3B =3B = =3B =3B =3B =3B <=3Bhandler name=3D"SOAPActionBasedDispatcher= "
 =3B =3B =3B =3B =3B =3B =3B =3B = =3B =3B =3B =3B =3B =3B =3B =3B =3B =3B=  =3B =3B class=3D"org.apache.axis2.dispatchers.SOAPActionBasedDispa= tcher"/>=3B
 =3B =3B =3B =3B =3B =3B =3B&n= bsp=3B =3B =3B =3B <=3Bhandler name=3D"RequestURIOperationDis= patcher"
 =3B =3B =3B =3B =3B =3B =3B = =3B =3B =3B =3B =3B =3B =3B =3B =3B =3B=  =3B =3B =3B class=3D"org.apache.axis2.dispatchers.RequestURIOp= erationDispatcher"/>=3B
 =3B =3B =3B =3B =3B = =3B =3B =3B =3B =3B =3B <=3Bhandler name=3D"SOAPMessa= geBodyBasedDispatcher"
 =3B =3B =3B =3B =3B =3B&= nbsp=3B =3B =3B =3B =3B =3B =3B =3B =3B&nbs= p=3B =3B =3B =3B =3B class=3D"org.apache.axis2.dispatchers.= SOAPMessageBodyBasedDispatcher"/>=3B
 =3B =3B =3B =3B&= nbsp=3B =3B =3B =3B =3B =3B =3B <=3Bhandler name= =3D"HTTPLocationBasedDispatcher"
 =3B =3B =3B =3B = =3B =3B =3B =3B =3B =3B =3B =3B =3B =3B=  =3B =3B =3B =3B =3B =3B class=3D"org.apache.axis2.= dispatchers.HTTPLocationBasedDispatcher"/>=3B
 =3B =3B =3B=  =3B =3B =3B =3B =3B =3B =3B =3B <=3Bhand= ler name=3D"GenericProviderDispatcher"
 =3B =3B =3B =3B&= nbsp=3B =3B =3B =3B =3B =3B =3B =3B =3B&nbs= p=3B =3B =3B =3B =3B =3B =3B class=3D"org.apache.ax= is2.jaxws.dispatchers.GenericProviderDispatcher"/>=3B
 =3B =3B=  =3B =3B =3B =3B =3B =3B =3B =3B =3B &l= t=3Bhandler name=3D"MustUnderstandValidationDispatcher"
 =3B =3B=  =3B =3B =3B =3B =3B =3B =3B =3B =3B&nb= sp=3B =3B =3B =3B =3B =3B =3B =3B =3B class= =3D"org.apache.axis2.jaxws.dispatchers.MustUnderstandValidationDispatcher"/= >=3B
 =3B =3B =3B =3B =3B =3B =3B <=3B/p= hase>=3B
 =3B =3B =3B =3B =3B =3B =3B <= =3Bphase name=3D"RMPhase"/>=3B
 =3B =3B =3B =3B = =3B =3B =3B <=3B!-- =3B =3B =3B =3B =3B user = can add his own phases to this area =3B -->=3B
 =3B =3B&nb= sp=3B =3B =3B =3B =3B <=3Bphase name=3D"OperationInFaultP= hase"/>=3B
 =3B =3B =3B =3B =3B =3B =3B &l= t=3Bphase name=3D"soapmonitorPhase"/>=3B
 =3B =3B =3B <= =3B/phaseOrder>=3B
 =3B =3B =3B <=3BphaseOrder type=3D"O= utFaultFlow">=3B
 =3B =3B =3B =3B =3B =3B = =3B <=3B!-- =3B =3B =3B =3B =3B user can add his own = phases to this area =3B -->=3B
 =3B =3B =3B =3B&nb= sp=3B =3B =3B <=3Bphase name=3D"soapmonitorPhase"/>=3B
 = =3B =3B =3B =3B =3B =3B =3B <=3Bphase name=3D"Ope= rationOutFaultPhase"/>=3B
 =3B =3B =3B =3B =3B&nbs= p=3B =3B <=3Bphase name=3D"RMPhase"/>=3B
 =3B =3B = =3B =3B =3B =3B =3B <=3Bphase name=3D"PolicyDetermination= "/>=3B
 =3B =3B =3B =3B =3B =3B =3B <=3B= phase name=3D"MessageOut"/>=3B
 =3B =3B =3B =3B = =3B =3B =3B <=3Bphase name=3D"Security"/>=3B
 =3B = =3B =3B <=3B/phaseOrder>=3B
<=3B/axisconfig>=3B

//now= run the TestCase org.apache.axis2.handlers.addressing.AddressingOutHandler= Test.java:
 =3B =3B =3B =3B =3B =3B =3B java= .io.File configFile =3D new java.io.File(System.getProperty("basedir"=2C"."= ) + "/test-resources/axis2-IncludeOptionalHeadersTrue.xml")=3B
 =3B&= nbsp=3B =3B =3B =3B =3B =3B org.apache.axis2.context.Co= nfigurationContext cfgCtx =3Dorg.apache.axis2.context.ConfigurationContextF= actory.createConfigurationContextFromFileSystem("target/test-classes"=2Ccon= figFile.getAbsolutePath())=3B
//<=3Bparameter name=3D"includeOptionalH= eaders">=3Btrue<=3B/parameter>=3B in addressing module should now be = true

 =3B =3B =3B =3B =3B =3B =3B msgCtx= t =3D cfgCtx.createMessageContext()=3B
 =3B =3B =3B =3B&= nbsp=3B =3B =3B msgCtxt.setEnvelope(OMAbstractFactory.getSOAP11Fact= ory().getDefaultEnvelope())=3B
 =3B =3B =3B =3B =3B&= nbsp=3B =3B msgCtxt.setTo(new EndpointReference("http://www.to.org/service/"))=3B
=  =3B =3B =3B =3B =3B =3B =3B msgCtxt.setFrom(ne= w EndpointReference("http://www.from.org/service/"))=3B
 =3B =3B =3B&nbs= p=3B =3B =3B =3B msgCtxt.setReplyTo(new EndpointReference("http://www.replyT= o.org/service/"))=3B
 =3B =3B =3B =3B =3B = =3B =3B msgCtxt.setFaultTo(new EndpointReference("http://www.faultTo.org/service/"))=3B
 =3B =3B =3B =3B =3B =3B =3B msgCtxt= .setWSAAction("
= http://www.actions.org/action")=3B
 =3B =3B =3B =3B&= nbsp=3B =3B =3B msgCtxt.setMessageID("123456-7890")=3B
 =3B&= nbsp=3B =3B =3B =3B =3B =3B msgCtxt.addRelatesTo(new Re= latesTo("ht= tp://www.relatesTo.org/service/"))=3B
 =3B =3B =3B = =3B =3B =3B =3B msgCtxt.setProperty(WS_ADDRESSING_VERSION=2C Fi= nal.WSA_NAMESPACE)=3B =3B =3B =3B =3B =3B =3B = =3B
 =3B =3B =3B =3B =3B =3B =3B outHandler= .invoke(msgCtxt)=3B
 =3B =3B =3B =3B =3B =3B&nbs= p=3B org.custommonkey.xmlunit.XMLUnit.setIgnoreWhitespace(true)=3B
 = =3B =3B =3B =3B =3B =3B =3B assertXMLEqual(msgCtxt.= getEnvelope().toString()=2C org.apache.axis2.handlers.util.TestUtil.getOMBu= ilder("withOptionalHeadersTest.xml").getDocumentElement().toString())=3B&nb= sp=3B =3B

//msgCtxt.getEnvelope().toString() should be IDENTICA= L to contents of withOptionalHeadersTest.xml shown here
<=3Bsoapenv:En= velope xmlns:soapenv=3D"http://schemas.xmlsoap.org/soap/envelope/">=3B =3B =3B =3B <=3Bsoapenv:Header xmlns:wsa=3D"http://www.w3.org/2005= /08/addressing">=3B
 =3B =3B =3B  =3B =3B = =3B <=3Bwsa:To>=3Bhttp://www.to.org/service/<=3B/wsa:To>=3B
 =3B=  =3B =3B  =3B =3B =3B <=3Bwsa:From>=3B<=3Bwsa:Add= ress>=3Bhttp://www.from.org/service/<=3B/wsa:Address>= =3B<=3B/wsa:From>=3B
 =3B =3B =3B  =3B =3B&n= bsp=3B <=3Bwsa:ReplyTo>=3B<=3Bwsa:Address>=3Bht= tp://www.replyTo.org/service/<=3B/wsa:Address>=3B<=3B/wsa:ReplyTo= >=3B
 =3B =3B =3B  =3B =3B =3B <=3Bwsa:Fault= To>=3B<=3Bwsa:Address>=3Bhttp://www.faultTo.org/s= ervice/<=3B/wsa:Address>=3B<=3B/wsa:FaultTo>=3B
 =3B&nbs= p=3B =3B  =3B =3B =3B <=3Bwsa:Action>=3Bhttp://www.actio= ns.org/action<=3B/wsa:Action>=3B
 =3B =3B =3B  = =3B =3B =3B <=3Bwsa:MessageID>=3B123456-7890<=3B/wsa:MessageI= D>=3B
 =3B =3B =3B  =3B =3B =3B <=3Bwsa:Rela= tesTo RelationshipType=3D"http://www.w3.org/2005/08/addressing/reply">= =3Bhttp://www.relatesTo.org/service/<=3B/wsa:RelatesTo>=3B =3B =3B =3B <=3B/soapenv:Header>=3B
 =3B =3B&n= bsp=3B <=3Bsoapenv:Body />=3B
<=3B/soapenv:Envelope>=3B

i= s this not the case?
Martin Gainty
_________________________________= _____________
Verzicht und Vertraulichkeitanmerkung/Note de d=E9ni et d= e confidentialit=E9


Diese Nachricht ist vertraulich. Sollten Sie nicht der vorges= ehene Empfaenger sein=2C so bitten wir hoeflich um eine Mitteilung. Jede un= befugte Weiterleitung oder Fertigung einer Kopie ist unzulaessig. Diese Nac= hricht dient lediglich dem Austausch von Informationen und entfaltet keine = rechtliche Bindungswirkung. Aufgrund der leichten Manipulierbarkeit von E-M= ails koennen wir keine Haftung fuer den Inhalt uebernehmen.

Ce message est confidentiel et peut =EAtre privil=E9gi=E9. Si vous n'=
=EAtes pas le destinataire pr=E9vu=2C nous te demandons avec bont=E9 que po=
ur satisfaire informez l'exp=E9diteur. N'importe quelle diffusion non autor=
is=E9e ou la copie de ceci est interdite. Ce message sert =E0 l'information=
 seulement et n'aura pas n'importe quel effet l=E9galement obligatoire. =C9=
tant donn=E9 que les email peuvent facilement =EAtre sujets =E0 la manipula=
tion=2C nous ne pouvons accepter aucune responsabilit=E9 pour le contenu fo=
urni.




From: brianreinho= ld@lampreynetworks.com
To: java-dev@axis.apache.org
Subject: No headers in response
Date:= Thu=2C 27 Sep 2012 07:35:07 -0400

 =3BI am re-opening a question I saw no answer to asked in this forum qui= te a while  =3Bago.

In the STS= service requesting a SMAL20 token the response is okay.

But in the service that needs to have the SAML20 token=2C= the response has no headers at all. This is in spite of the must understan= d setting in the client headers in both the addressing and security part.

 =3B

Everything is 1.6.2=3B rampart=2C axis2=2C and axiom is 1.2.14. =3B Ad= ding the <=3Bparameter name=3D"includeOptionalHead= ers">=3Btrue<=3B/parameter>=3B in the service.xml does not = help (though that is what I used programmatically on the client side to gen= erate the correct addressing headers).

Is = this a bug or what am I doing wrong in the configuration?

 =3B

Thanks=2C

 =3B

Bri= an Reinhold


No virus found in this message.
Che= cked by AVG - www.avg.com<= /a>
Version: 2012.0.2221 / Virus Database: 2441/5294 - Release Date: 09/= 27/12

No virus found in this= message.
Checked by AVG -
www.avg.com
Version: 2012.0.2221 / Virus Database: 2441/5294 - R= elease Date: 09/27/12

= --_372773bd-afc3-449a-85d8-2c4ff605a2e6_--