DerivedKeyProcessor is overwritten if more derivedkeys are present in a Soap 
Message.
-------------------------------------------------------------------------------------

                 Key: WSS-112
                 URL: https://issues.apache.org/jira/browse/WSS-112
             Project: WSS4J
          Issue Type: Bug
         Environment: Rampart latest, Wss4J latest
            Reporter: Rasmus Rhein Helwigh
            Assignee: Ruchith Udayanga Fernando


org.apache.ws.security.WSSConfig.getProcessor returns a cached Processor

public Processor getProcessor(QName el) throws WSSecurityException {
        Processor p = (Processor) processorMap.get(el);
        return p;
    }

This causes problem if two DerivedKeyProcessors are needed for the same 
message, as the second processor will overwrite the first.
A fix could be to Create a new instance each time. 

Check out this hack:

 public Processor getProcessor(QName el) throws WSSecurityException {
        Processor p = (Processor) processorMap.get(el);        
        try {
        return (Processor) 
Loader.loadClass(p.getClass().getName()).newInstance();
} catch (InstantiationException e) {
        throw new WSSecurityException("Unable to get processor",e);             
        
} catch (IllegalAccessException e) {
        throw new WSSecurityException("Unable to get processor",e);
} catch (ClassNotFoundException e) {
        throw new WSSecurityException("Unable to get processor",e);
}                     
 }


I can try and make a better fix if requested. WCF <-> Wss4j interop will work a 
lot better with this fix..

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to