Sorry for the delay on this. I fixed this in
https://issues.apache.org/jira/browse/CXF-7939 so that you can omit the
"action" String in WSS4JInInterceptor, when the "ignoreActions" property is
true. You can take a look at the test-case I added here to see how it works:

https://github.com/apache/cxf/commit/976ecb5f43bd873d01e07078194636a99e812906

Colm.

On Mon, Dec 17, 2018 at 4:12 PM Burkard Stephan <[email protected]>
wrote:

> Thanks for the hints!
>
> Currently there is no token at all. As a first step I want the service to
> reject the request because it has no authentication info.
>
> I tried to set setIgnoreActions(true) as well as the validatorMap, but I
> still get (as before) <faultstring>No security action was
> defined!</faultstring>
>
>
> I found the reason for that in WSS4JInInterceptor, in the method
> "handleMessageInternal". There is a method call to "getAction(SoapMessage
> msg, SoapVersion version)" and this method does not respect the
> "ignoreActions" flag.
>
> Is this there something like a NOOP action I can define for such a case?
> Or do you mean in your answer that I have to extend WSS4JInInterceptor to
> get this working?
>
> Thanks
> Stephan
>
>
> -----Ursprüngliche Nachricht-----
> Von: Colm O hEigeartaigh <[email protected]>
> Gesendet: Montag, 17. Dezember 2018 15:04
> An: [email protected]
> Betreff: Re: Validate Kerberos token in CXF webservice
>
> Is it the case that only a KerberosToken encoded as a BinarySecurityToken
> is in the security header? Or are there signatures etc. in there as well?
> If (a), then you could try specifying setIgnoreActions(true) on
> WSS4JInInterceptor. It should process the security header, but won't
> actually verify that any action was performed. So in this case you'd need
> to write a custom interceptor to make sure that you actually processed a
> Kerberos Token.
>
> You'll also need to set the "validatorMap" property on the
> WSS4JInInterceptor properties object, so that the kerberosTokenValidator
> validates the BinarySecurityToken.
>
> Colm.
>
> On Mon, Dec 10, 2018 at 1:23 PM Burkard Stephan <[email protected]
> >
> wrote:
>
> > Hi CXF users
> >
> > I want to implement a CXF webservice that validates a Kerberos token
> > with plain WS-Security (not Policy) from the client.
> >
> > I found the following article, but it is done with WS-SecurityPolicy:
> >
> > http://coheigea.blogspot.com/2011/10/using-kerberos-with-web-services-
> > part-i.html
> >
> >
> >
> > However, I was able to adapt some things from it. I have a
> "kerberos.jaas"
> > file that is passed to the webservice (Spring-Boot) as
> > "java.security.auth.login.config" and has the following content
> >
> > myContext {
> >     com.sun.security.auth.module.Krb5LoginModule required
> >     refreshKrb5Config=true useKeyTab=true storeKey=true
> >     keyTab="path\to\keytab\file.keytab"
> > principal="HTTP/myService@Realm"; };
> >
> > In the Spring configuration I have this Bean
> >
> >     @Bean
> >     public KerberosTokenValidator kerberosTokenValidator() {
> >         KerberosTokenValidator validator = new KerberosTokenValidator();
> >         validator.setContextName("myContext");
> >         validator.setServiceName("myService");
> >         return validator;
> >     }
> >
> > And the webservice endpoint is configured with the validator and the
> > JAAS context name:
> >
> >     factory.getProperties().put(SecurityConstants.BST_TOKEN_VALIDATOR,
> > kerberosTokenValidator);
> >
> >
> factory.getProperties().put(SecurityConstants.KERBEROS_JAAS_CONTEXT_NAME, "
> > myContext ");
> >
> >
> >
> > All this has of course no effect at all because there is no WSS4J
> > In-Interceptor that triggers the WS-Security processing.
> >
> >     @Bean
> >     public WSS4JInInterceptor wss4JInInterceptor() {
> >         Map<String, Object> properties = new HashMap<>();
> >         properties.put(WSHandlerConstants.ACTION, >>> ??? <<<);
> >         return new WSS4JInInterceptor(properties);
> >     }
> >
> > But I did not found what WSS4J action is needed to configure the
> > Kerberos validation. The action "KERBEROS_TOKEN" seems to add a token,
> > so it is the opposite of what I want.
> >
> > Thanks for any help
> > Stephan
> >
> >
> >
> >
> >
> >
> >
> >
>
> --
> Colm O hEigeartaigh
>
> Talend Community Coder
> http://coders.talend.com
>


-- 
Colm O hEigeartaigh

Talend Community Coder
http://coders.talend.com

Reply via email to