Date: Wed, 24 Sep 2014 13:08:15 -0400
Subject: Re: Web sphere 8.5 and WSS4J1. 6. 9 signing issue.
From: [email protected]
To: [email protected]; [email protected]

Hi Colm 
Thank you for your reply. I already tried with WSS4J 1.16.15 earlier. But same 
error. I was almost losing hope on this before your reply. 

I will re try with 1.6.16 as soon as I get the setup again and let you know. 

Thank you for your time .  
MG>if after changing libraries you are calling no joy ..more than likely your 
private key is bad
MG>can we see the ASN.1 output of private key.... if for no other reason than 
to verify attributes are non-negative?
MG>Thanks and Regards,

On Wednesday, September 24, 2014, Colm O hEigeartaigh <[email protected]> 
wrote:

Could you try with a more recent version of WSS4J (1.6.16)?

Colm.

On Tue, Sep 23, 2014 at 6:18 PM, Anupam Nandan <[email protected]> wrote:
Hello 
Can some one please help me on this ?
Thank you!

On Sunday, September 21, 2014, Anupam Nandan <[email protected]> wrote:
Hi All, I am trying to write a java client program (servlet), which will 
generate and sign the SOAP request with the keys provided by thrid party 
(keystore.jks). When I deploy the Servlet on tomcat it just works fine. But on 
web sphere 8.5 I am getting "RSA signature is not verified" . I tried debugging 
the issue but not sure what is going wrong.I tried finding answer online and 
added IS_BSP_COMPLIANT as false but didnt help.Most likely the issue is with 
signature. Let me know how I can trouble this issue. Any suggestion would be 
very helpful.
Thank you for your time and looking forward for some guidance. Code 
--------------------------------------------------------------------------------------------------------------------------------
                    attstmt.getAttributes().add(attr);                      
assertion.getAttributeStatements().add(attstmt);                                
                AssertionWrapper assertionWrper = new 
AssertionWrapper(assertion);                      WSSecSAMLToken samlToken = 
new WSSecSAMLToken();                        samlToken.build(soapDocument, 
assertionWrper, header);                                          
SoapMessageWithoutHeader = nodeToString(soapDocument);                  
System.out.println("Anupam SOAP Message with SAML 2.0 Assertion : 
"+SoapMessageWithoutHeader);                                          // 
Inserting the wsu:Timestamp
                        WSSecTimestamp timestamp = new WSSecTimestamp();        
                timestamp.setTimeToLive(TIMESTAMP_VALIDATE_PERIOD);
                        WSSecHeader timestampHeader = new WSSecHeader();        
                timestampHeader.insertSecurityHeader(soapDocument);             
        timestamp.build(soapDocument, timestampHeader);                         
                        SoapMessageWithoutHeader = nodeToString(soapDocument);  
                System.out.println("Anupam SOAP Message with time stamp : 
"+SoapMessageWithoutHeader);                                          
System.out.println("Anupam path to key store "+pathtoKeyStore);                 
                        WSSecSignature builder = new WSSecSignature();          
        builder.setUserInfo(keyAlias, pwdValue);                        
builder.setKeyIdentifierType(WSConstants.BST_DIRECT_REFERENCE);                 
                                                                        
java.util.Properties prop = new java.util.Properties();
                        
prop.setProperty("org.apache.ws.security.crypto.provider", 
"org.apache.ws.security.components.crypto.Merlin");                  
prop.setProperty("org.apache.ws.security.crypto.merlin.keystore.type", "jks");  
                
prop.setProperty("org.apache.ws.security.crypto.merlin.keystore.base64.encoded",
 "false");                      
prop.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", 
pwdValue);                   
prop.setProperty("org.apache.ws.security.crypto.merlin.file", pathtoKeyStore);  
                prop.setProperty(WSHandlerConstants.IS_BSP_COMPLIANT, "false"); 
                
//prop.setProperty(WSHandlerConstants.ALLOW_NAMESPACE_QUALIFIED_PASSWORD_TYPES, 
"true");                        Crypto crypto = 
CryptoFactory.getInstance(prop);                        
builder.prepare(soapDocument, crypto, header);
                                                Vector parts = new Vector();


                        parts.add(new WSEncryptionPart(TIMESTAMP_LOCALNAME, 
TIMESTAMP_QNAME, CONTENT));                 parts.add(new 
WSEncryptionPart(builder.getBSTTokenId()));                       parts.add(new 
WSEncryptionPart(ASSERTION_LOCALNAME, ASSERTION_QNAME ,ELEMENT));               
  parts.add(new WSEncryptionPart(SOAPBODY_LOCALNAME,SOAPBODY_QNAME,CONTENT ));  
                                          builder.setParts(parts);              
          builder.prependBSTElementToHeader(header);                      
builder.computeSignature(builder.addReferencesToSign(parts,header));            
                                                                                
                        Proxy proxy = new Proxy(Proxy.Type.HTTP, new 
InetSocketAddress("63.66.64.232",8080));                                        
   String jNetURL1= "https://XXX/";;                        URL endpoint = new 
URL(jNetURL1);                       HttpURLConnection con = 
(HttpURLConnection) endpoint.openConnection(proxy);                     
con.setRequestMethod("POST");                   
con.setRequestProperty("Content-type", "text/xml; charset=utf-8");              
        con.setRequestProperty("SOAPAction", "http://jnet.XXX/XX";);
                        con.setDoInput(true);                   
con.setDoOutput(true);                                          OutputStream 
reqStream = con.getOutputStream();                                              
                   if(con ==null){                         
System.out.println("Connection to Jnet is null");                               
                        }                       String SoapMessageWithSign = 
nodeToString(soapDocument);                        System.out.println("Anupam 
SOAP Message with after signature : "+SoapMessageWithSign);                     
                     reqStream.write(SoapMessageWithSign.getBytes());
                        String jNetresponse=null;                       try {   
                        BufferedReader httpReader = new BufferedReader(new 
InputStreamReader(                                           
con.getInputStream()));                                                         
String inputLine = null;                                StringBuffer buff = new 
StringBuffer();                         System.out.println("value of httpreader 
"+httpReader.ready());                          System.out.println("httpReader 
value "+httpReader.toString());                                                 
         while ((inputLine = httpReader.readLine()) != null) {                  
                         buff.append(inputLine);                                
         System.out.println("input line "+inputLine);                           
 }
                                jNetresponse = buff.toString();
                                //System.out.println("Anupam Post 
response:"+response);
                        }catch(SOAPFaultException sfe){                         
System.out.println(sfe.getMessage());                                           
        } 
Best regards,
Anupam Nandan



-- 
Best regards,
Anupam Nandan201.920.0722



-- 
Colm O hEigeartaigh

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



-- 
Best regards,
Anupam Nandan201.920.0722
                                          

Reply via email to