Hi

On Fri, Nov 5, 2010 at 2:21 PM, Jason Pell <[email protected]> wrote:

> Hi,
>
> I am struggling with configuring CXF and spring security.  I am running the
> 2.3.1-SNAPSHOT which has some improvements to the WSS4JInInterceptor.  So
> basically what I have is a JAX-WS service using ws-security to authenticate
> using username password token.  The username is the uid= of the DN of a
> user
> record in LDAP.
>
> What I want is for the Principal saved into teh CXF SecurityContext to have
> the Full DN of the user.
>
> So what I have setup by way of interceptors are:
>
> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor
> (ws-security.ut.no-callbacks = true)
> I have a custom class which extends
> org.apache.cxf.interceptor.security.AbstractUsernameTokenInInterceptor to
> use spring security to create the Subject.  I am creating a subject with
> the
> full DN of the user.
>
> However the
> org.apache.cxf.interceptor.security.AbstractSecurityContextInInterceptor
> ignores this and recreates the SecurityContext with the original username
>
> SecurityContext sc = createSecurityContext(context.getUserPrincipal(),
> subject);
>
>
the assumption was that the Principal created by WSS4J initially does
represent the final/correct Principal.
So may be the interceptor should be updated like this :

List<?> principals = subject.getPrincipals();

Principal p = principals.size() > 0 && !(principals.get(0) instanceof Group)

                      ? (Principal)principals.get(0) :
context.getUserPrincipal();

SecurityContext sc = createSecurityContext(p, subject);

something like that...

What do you think ?

cheers, Sergey


So I am kind of up the creek without any kind of paddle :-)
>
> Any suggestions for how I might proceed.  I guess I can always create my
> own
> interceptor from scratch to do this.  I already did the same thing to
> populate the full DN of groups.
>

Reply via email to