You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rampart-dev@ws.apache.org by Jorge Fernandez <in...@yahoo.es> on 2007/08/26 17:28:48 UTC

Accedding alias header with rampart basic config

Hi,

I'm reading information from signature header in service to get the alias of the certificate from one operation in my service. I'm using the code in [1] with rampart 1.3. When I use policy I don't have any problems but when I use rampart basic configuration, execution thread doesn't get out of env.build(); in Axis2Util.getDocumentFromSOAPEnvelope(msgCtx.getEnvelope(), true); in constructor RampartMessageData(msgContext, false); 

Shouldn't it work anyway? Can anybody tell me how can I get the rampart configuration from the services.xml to get the crypto element? I'm using [2] for that but I would like to know if there's any easier way to do that.

 
 Thanks,
 
 Jorge Fernández


[1]
public static String getAlias(MessageContext msgContext)throws RampartException,WSSecurityException{
        OMElement secHeader=msgContext.getEnvelope().getHeader().getFirstChildWithName(new QName("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "Security"));
        OMElement signature=secHeader.getFirstChildWithName(new QName("http://www.w3.org/2000/09/xmldsig#", "Signature"));
        OMElement keyInfo=signature.getFirstChildWithName(new QName("http://www.w3.org/2000/09/xmldsig#", "KeyInfo"));
        OMElement reference=keyInfo.getFirstChildWithName(new QName("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "SecurityTokenReference"));
        OMElement keyIdentifier=reference.getFirstChildWithName(new QName("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "KeyIdentifier"));
        if(keyIdentifier==null)
            return null;
        String key=keyIdentifier.getText();
        RampartMessageData rmd = new RampartMessageData(msgContext, false);
        RampartPolicyData rpd = rmd.getPolicyData();
        if(rpd!=null) {
            Crypto crypto=RampartUtil.getSignatureCrypto(rpd.getRampartConfig(), msgContext.getAxisService().getClassLoader());
            String systemCode=crypto.getAliasForX509Cert(Base64.decode(key));
            return systemCode;
        }else
            return null;
    }


[2]
OMElement inflowSecConfig=MessageContext.getCurrentMessageContext().getOperationContext().getAxisOperation().getParameter("InflowSecurity").getParameterElement();
            OMElement action=(OMElement)inflowSecConfig.getChildElements().next();
            Iterator parameters=action.getChildElements();
            OMElement propertiesFile=null;
            String propertiesFileName=null;
            while((propertiesFile=(OMElement)parameters.next())!=null && !"signaturePropFile".equalsIgnoreCase(propertiesFileName)){
                propertiesFileName=propertiesFile.getLocalName();
            }



       
---------------------------------

Sé un Mejor Amante del Cine
¿Quieres saber cómo? ¡Deja que otras personas te ayuden!.