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 . 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] > <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote: > >> Hello >> >> Can some one please help me on this ? >> >> Thank you! >> >> On Sunday, September 21, 2014, Anupam Nandan <[email protected] >> <javascript:_e(%7B%7D,'cvml','[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 Nandan >> 201.920.0722 >> >> > > > -- > Colm O hEigeartaigh > > Talend Community Coder > http://coders.talend.com > -- Best regards, Anupam Nandan 201.920.0722
