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=5e6323442952eb619300582a2ced25cf861f6118;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.URIDomainExpressionBuilde
> > > 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.EndpointReferenceDomainEx
> > > 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.URIDomainExpressionBuilde
> > > 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=systests/ws
> > > -specs/src/test/java/org/apache/cxf/systest/ws/policy/AddressingPolicy
> > >
> > ExternalAttachmentWsdl11Test.java;h=d44ee8decf628a57edbf402bc6d8ff0c00
> > > 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.port(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/authentication-
> > > > policy.xml
> > > >
> > > > Thanks.
> > > >
> > > > Mike
> > >
>

Reply via email to