Sorry Andrei, I didnt think you were going to respond so i moved forward with a solution using another technique. I would like to solve this issue however so i created a branch with the problem:
https://github.com/MacFlecknoe/service-repository-sample/blob/policy-attachement-problem/schema/src/main/resources/policy/authentication-policy.xml https://github.com/MacFlecknoe/service-repository-sample/blob/ policy-attachement-problem /schema/src/main/resources/service/user-soap-v1.wsdl <https://github.com/MacFlecknoe/service-repository-sample/blob/master/schema/src/main/resources/service/user-soap-v1.wsdl> https://github.com/MacFlecknoe/service-repository-sample/blob/ <https://github.com/MacFlecknoe/service-repository-sample/blob/master/user/service/src/main/webapp/WEB-INF/beans.xml> policy-attachement-problem <https://github.com/MacFlecknoe/service-repository-sample/blob/master/schema/src/main/resources/service/user-soap-v1.wsdl> /user/service/src/main/webapp/WEB-INF/beans.xml Could you take another quick peek? Again, the problem is that the policy is being completely ignored. The address i have it configured for is both reflected in the wsdl and in reality when I start my server. Also, is there a way to configure the address in the policy so that is dynamic? I am not sure what the end address of the service is going to be once its deployed (e.g. its domain will likely change). Thanks, Mike On Thu, Jul 3, 2014 at 4:38 AM, Andrei Shakirin <[email protected]> wrote: > Hi, > > I am bit confused: don't see policy attachments in your configuration, > you attach policies direct to endpoint: > > <jaxws:features> > <bean class="org.apache.cxf.feature.LoggingFeature"/> > <p:policies> > <!-- we attach policies via spring as there are issues leveraging > external policy attachments when using PolicyAttachement with cxf 2.*--> > <wsp:PolicyReference > URI="classpath:policy/authentication-policy.xml" /> > <wsp:PolicyReference URI="classpath:policy/i18n-policy.xml" /> > </p:policies> > </jaxws:features> > > To use policy attachments you need something like: > > <cxf:bus> > <cxf:features> > <p:policies/> > </cxf:features> > </cxf:bus> > > <p:externalAttachment location="${temp.location}/addr-external.xml"/> > > Where addr-external.xml is policy attachment: > > <attachments xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsa=" > http://www.w3.org/2005/08/addressing"> > <wsp:PolicyAttachment> > <wsp:AppliesTo> > <wsa:EndpointReference> > <wsa:Address>http://localhost:9020/SoapContext/GreeterPort > </wsa:Address> > </wsa:EndpointReference> > </wsp:AppliesTo> > <wsp:Policy> > <wsp:ExactlyOne> > <wsp:All> > <wsam:Addressing xmlns:wsam=" > http://www.w3.org/2007/02/addressing/metadata"> > <wsp:Policy/> > </wsam:Addressing> > </wsp:All> > </wsp:ExactlyOne> > </wsp:Policy> > </wsp:PolicyAttachment> > </attachments> > > I propose that you look into working policy attachments CXF system tests > and find the difference with your code. > If that doesn't help, please create a small distilled sample with simple > policy (for example WS-Addressing) to illustrate your problem, I will look > into it. > > Regards, > Andrei. > > > -----Original Message----- > > From: Lambert, Michael [mailto:[email protected]] > > Sent: Mittwoch, 2. Juli 2014 15:25 > > To: [email protected] > > Subject: Re: policy attachment > > > > Thats part of the problem Andrei. I have followed the examples and its > just not > > working for me. Can you take a look at my policy file and wsdl and see if > > anything obvious sticks out as wrong? > > > > https://github.com/MacFlecknoe/service-repository- > > sample/blob/master/schema/src/main/resources/policy/authentication- > > policy.xml > > https://github.com/MacFlecknoe/service-repository- > > sample/blob/master/schema/src/main/resources/service/user-soap-v1.wsdl > > > > Here is how I have it configured: > > https://github.com/MacFlecknoe/service-repository- > > sample/blob/master/user/service/src/main/webapp/WEB-INF/beans.xml > > > > It only works when I embed the policy in the wsdl file itself. The > external > > attachment file loads but doesnt trigger the ws-security policy to fire. > > > > -Mike > > > > > > On Wed, Jul 2, 2014 at 8:27 AM, Andrei Shakirin <[email protected]> > > wrote: > > > > > Hi, > > > > > > > -----Original Message----- > > > > From: Lambert, Michael [mailto:[email protected]] > > > > Sent: Mittwoch, 2. Juli 2014 14:05 > > > > To: [email protected] > > > > Subject: RE: policy attachment > > > > > > > > Thanks Andrei! That helps a lot... I'll try your suggestion and let > > > > you > > > know how it > > > > goes. > > > > > > > > > > OK. > > > > > > > Any insight as to why I can't get end point references to work? Is > > > > there > > > a trick to > > > > configuring it? I followed the example on the samples but can't seem > > > > to > > > get it > > > > to work with my wsdl. Does the end point need to match what is in > > > > the > > > wsdl or > > > > what cxf generates the address to be when it starts? Any > > > > documentation surrounding this? > > > > > > This construction should work by default, if endpoint address matches > > > to your service: > > > > > > <attachments xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsa=" > > > http://www.w3.org/2005/08/addressing"> > > > <wsp:PolicyAttachment> > > > <wsp:AppliesTo> > > > <wsa:EndpointReference> > > > > > > <wsa:Address>http://localhost:9020/SoapContext/GreeterPort > > > </wsa:Address> > > > </wsa:EndpointReference> > > > </wsp:AppliesTo> > > > <wsp:Policy> > > > <wsp:ExactlyOne> > > > <wsp:All> > > > <wsam:Addressing xmlns:wsam=" > > > http://www.w3.org/2007/02/addressing/metadata"> > > > <wsp:Policy/> > > > </wsam:Addressing> > > > </wsp:All> > > > </wsp:ExactlyOne> > > > </wsp:Policy> > > > </wsp:PolicyAttachment> > > > </attachments> > > > > > > For details, look into addr-external.xml and AddressingPolicyTest.java > > > in > > > systests/ws-specs: > > > > > > https://git-wip-us.apache.org/repos/asf?p=cxf.git;a=tree;f=systests/ws > > > -specs/src/test/java/org/apache/cxf/systest/ws/policy;h=5e6323442952eb > > > 619300582a2ced25cf861f6118;hb=HEAD > > > > > > Regards, > > > Andrei. > > > > > > > > > > > > > > Thanks much! > > > > On Jul 2, 2014 3:19 AM, "Andrei Shakirin" <[email protected]> > wrote: > > > > > > > > > Hi, > > > > > > > > > > If you use CXF >= 3.0.0, 2.7.12, > > > > > you should register > > > > > org.apache.cxf.ws.policy.attachment.external.URIDomainExpressionBu > > > > > ilde > > > > > r as bus extension. > > > > > It supports all policy attachment URL syntaxes (except extension). > > > > > > > > > > By default CXF registers the > > > > > org.apache.cxf.ws.policy.attachment.external.EndpointReferenceDoma > > > > > inEx pressionBuilder supporting only wsa:EndpointReference. > > > > > > > > > > See https://issues.apache.org/jira/browse/CXF-5685 for details. > > > > > > > > > > Either add following string into META-INF/cxf/bus-extensions.txt: > > > > > > > > > > org.apache.cxf.ws.policy.attachment.external.URIDomainExpressionBu > > > > > ilde r::true or add bean in Spring/Blueprint context with > > > > > URIDomainExpressionBuilder type. > > > > > > > > > > System test registering URIDomainExpressionBuilder: > > > > > https://git-wip-us.apache.org/repos/asf?p=cxf.git;a=blob;f=systest > > > > > s/ws > > > > > -specs/src/test/java/org/apache/cxf/systest/ws/policy/AddressingPo > > > > > licy > > > > > > > > > > > ExternalAttachmentWsdl11Test.java;h=d44ee8decf628a57edbf402bc6d8ff0c > > > > 00 > > > > > 42b649;hb=HEAD > > > > > . > > > > > > > > > > If you use CXF version < 3.0.0, 2.7.12, just copy the classes > > > > > URIDomainExpressionBuilder.java, URIDomainExpression.java and > > > > > register URIDomainExpressionBuilder as bus extension. > > > > > > > > > > Let me know if it works as expected. > > > > > > > > > > Regards, > > > > > Andrei. > > > > > > > > > > > -----Original Message----- > > > > > > From: Lambert, Michael [mailto:[email protected]] > > > > > > Sent: Mittwoch, 2. Juli 2014 08:13 > > > > > > To: [email protected] > > > > > > Subject: policy attachment > > > > > > > > > > > > I feel awful for asking so many questions but googling hasnt > > > > > > been > > > > > helpful. > > > > > > > > > > > > I am attempting to attach an external security policy to an > > > > > > endpoint > > > > > with no > > > > > > success. When I attempt to use a wsp:UI in the AppliesTo element > > > > > > cxf > > > > > blows up. > > > > > > Here is the contents of the file: > > > > > > > > > > > > ---- > > > > > > <?xml version="1.0" encoding="UTF-8" ?> <attachments > > > > > > xmlns:wsp="http://www.w3.org/ns/ws-policy" > > > > > > xmlns:wsa="http://www.w3.org/2005/08/addressing" > > > > > > xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> > > > > > > <wsp:PolicyAttachment> > > > > > > <wsp:AppliesTo> > > > > > > <wsp:URI> > > > > > > > > > > > http://cxf.apache.org/testutils/wsdl/greeter_control.wsdl#wsdl.por > > > > > t(Gr > > > > > eeterSer > > > > > > vice/GreeterPort) > > > > > > </wsp:URI> > > > > > > </wsp:AppliesTo> > > > > > > <wsp:Policy> > > > > > > <wsp:ExactlyOne> > > > > > > <wsp:All> > > > > > > <wsp:Policy> > > > > > > <sp:UsernameToken sp:IncludeToken=" > > > > > > > > > > > http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/ > > > > > Alwa > > > > > ysTo > > > > > > Recipient > > > > > > "> > > > > > > <wsp:Policy> > > > > > > <sp:WssUsernameToken10 /> > > > > > > </wsp:Policy> > > > > > > </sp:UsernameToken> > > > > > > </wsp:Policy> > > > > > > </wsp:All> > > > > > > </wsp:ExactlyOne> > > > > > > </wsp:Policy> > > > > > > </wsp:PolicyAttachment> > > > > > > </attachments> > > > > > > > > > > > > ---- > > > > > > And here is the error: > > > > > > ---- > > > > > > Caused by: javax.xml.ws.WebServiceException: > > > > > > org.apache.cxf.ws.policy.PolicyException: > > > > > > NO_DOMAINEXPRESSIONBUILDER_EXC > > > > > > ---- > > > > > > It appears that the wsp:URI element passed into > > > > > > DomainExpressionBuilderRegistry.build(Element element) has null > > > > > > contents > > > > > for > > > > > > a reason that I cannot figure out. I have tried different > > > > > > syntaxes and > > > > > URLs to try > > > > > > to get it to work and its always null. > > > > > > > > > > > > Putting an EndpointReference in the AppliesTo element doesnt > error: > > > > > > > > > > > > <wsa:EndpointReference><wsa:Address>http://localhost:8080/user- > > > > > > service/userService</wsa:Address> > > > > > > </wsa:EndpointReference> > > > > > > > > > > > > But it doesnt work either. It never seems to intercept calls to > > > > > > the > > > > > service hosted > > > > > > at the configured URL. The ONLY way I have able to get it to > > > > > > work is by embedding the policy in the wsdl. I dont want to do > > > > > > that however as I > > > > > want a > > > > > > mediator to handle the policy and would like the contract > > > > > > policies to > > > > > configured > > > > > > differently in different environments. > > > > > > > > > > > > > > > > > > Any help would be appreciated. I am tearing my hair out over > > > > > > this. I > > > > > cant be the > > > > > > only one attempting to do this. > > > > > > > > > > > > The code is on github: > > > > > > > > > > > > https://github.com/MacFlecknoe/service-repository- > > > > > > sample/blob/master/schema/src/main/resources/policy/authenticati > > > > > > on- > > > > > > policy.xml > > > > > > > > > > > > Thanks. > > > > > > > > > > > > Mike > > > > > > > > >
