Modified: webservices/wss4j/trunk/test/wssec/TestWSSecurityNew15.java URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/test/wssec/TestWSSecurityNew15.java?rev=700768&r1=700767&r2=700768&view=diff ============================================================================== --- webservices/wss4j/trunk/test/wssec/TestWSSecurityNew15.java (original) +++ webservices/wss4j/trunk/test/wssec/TestWSSecurityNew15.java Wed Oct 1 06:56:10 2008 @@ -68,190 +68,190 @@ * @author Werner Dittmann ([EMAIL PROTECTED]) */ public class TestWSSecurityNew15 extends TestCase implements CallbackHandler { - private static Log log = LogFactory.getLog(TestWSSecurityNew15.class); + private static Log log = LogFactory.getLog(TestWSSecurityNew15.class); - static final String soapMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" - + "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" - + " <soapenv:Body>" - + " <ns1:testMethod xmlns:ns1=\"uri:LogTestService2\"></ns1:testMethod>" - + " </soapenv:Body>" + "</soapenv:Envelope>"; - - static final WSSecurityEngine secEngine = new WSSecurityEngine(); - - static final Crypto crypto = CryptoFactory - .getInstance("cryptoSKI.properties"); - - MessageContext msgContext; - - Message message; - - /** - * TestWSSecurity constructor <p/> - * - * @param name - * name of the test - */ - public TestWSSecurityNew15(String name) { - super(name); - } - - /** - * JUnit suite <p/> - * - * @return a junit test suite - */ - public static Test suite() { - return new TestSuite(TestWSSecurityNew15.class); - } - - /** - * Main method <p/> - * - * @param args - * command line args - */ - public static void main(String[] args) { - junit.textui.TestRunner.run(suite()); - } - - /** - * Setup method <p/> - * - * @throws Exception - * Thrown when there is a problem in setup - */ - protected void setUp() throws Exception { - AxisClient tmpEngine = new AxisClient(new NullProvider()); - msgContext = new MessageContext(tmpEngine); - message = getSOAPMessage(); - } - - /** - * Constructs a soap envelope <p/> - * - * @return soap envelope - * @throws Exception - * if there is any problem constructing the soap envelope - */ - protected Message getSOAPMessage() throws Exception { - InputStream in = new ByteArrayInputStream(soapMsg.getBytes()); - Message msg = new Message(in); - msg.setMessageContext(msgContext); - return msg; - } - - /** - * Test that encrypt and decrypt a WS-Security envelope. - * - * This test uses the RSA_15 alogrithm to transport (wrap) the symmetric - * key. - * - * @throws Exception - * Thrown when there is any problem in signing or verification - */ - public void testEncryptionDecryptionRSA15() throws Exception { - SOAPEnvelope unsignedEnvelope = message.getSOAPEnvelope(); - WSSecEncrypt builder = new WSSecEncrypt(); - builder.setUserInfo("wss4jcert"); - builder.setKeyIdentifierType(WSConstants.BST_DIRECT_REFERENCE); - builder.setSymmetricEncAlgorithm(WSConstants.TRIPLE_DES); - Document doc = unsignedEnvelope.getAsDocument(); - WSSecHeader secHeader = new WSSecHeader(); - secHeader.insertSecurityHeader(doc); - log.info("Before Encryption Triple DES...."); - - /* - * Prepare the Encrypt object with the token, setup data structure - */ - builder.prepare(doc, crypto); - - /* - * Set up the parts structure to encrypt the body - */ - SOAPConstants soapConstants = WSSecurityUtil.getSOAPConstants(doc - .getDocumentElement()); - Vector parts = new Vector(); - WSEncryptionPart encP = new WSEncryptionPart(soapConstants - .getBodyQName().getLocalPart(), soapConstants.getEnvelopeURI(), - "Content"); - parts.add(encP); - - /* - * Encrypt the parts (Body), create EncrypedData elements that reference - * the EncryptedKey, and get a ReferenceList that can be put into the - * Security header. Be sure that the ReferenceList is after the - * EncryptedKey element in the Security header (strict layout) - */ - Element refs = builder.encryptForExternalRef(null, parts); - builder.addExternalRefElement(refs, secHeader); - - /* - * now add (prepend) the EncryptedKey element, then a - * BinarySecurityToken if one was setup during prepare - */ - builder.prependToHeader(secHeader); - - builder.prependBSTElementToHeader(secHeader); - - Document encryptedDoc = doc; - log.info("After Encryption Triple DES...."); - - /* - * convert the resulting document into a message first. The - * toAxisMessage() method performs the necessary c14n call to properly - * set up the signed document and convert it into a SOAP message. Check - * that the contents can't be read (checking if we can find a specific - * substring). After that we extract it as a document again for further - * processing. - */ - - Message encryptedMsg = SOAPUtil.toAxisMessage(encryptedDoc); - if (log.isDebugEnabled()) { - log.debug("Encrypted message, RSA-15 keytransport, 3DES:"); - XMLUtils.PrettyElementToWriter(encryptedMsg.getSOAPEnvelope() - .getAsDOM(), new PrintWriter(System.out)); - } - String encryptedString = encryptedMsg.getSOAPPartAsString(); - assertTrue(encryptedString.indexOf("LogTestService2") == -1 ? true - : false); - encryptedDoc = encryptedMsg.getSOAPEnvelope().getAsDocument(); - verify(encryptedDoc); - } - - /** - * Verifies the soap envelope <p/> - * - * @param envelope - * @throws Exception - * Thrown when there is a problem in verification - */ - private void verify(Document doc) throws Exception { - secEngine.processSecurityHeader(doc, null, this, crypto); - SOAPUtil.updateSOAPMessage(doc, message); - String decryptedString = message.getSOAPPartAsString(); - if (log.isDebugEnabled()) { - System.out.println("\n" + decryptedString + "\n"); - } - assertTrue(decryptedString.indexOf("LogTestService2") > 0 ? true - : false); - } - - public void handle(Callback[] callbacks) throws IOException, - UnsupportedCallbackException { - for (int i = 0; i < callbacks.length; i++) { - if (callbacks[i] instanceof WSPasswordCallback) { - WSPasswordCallback pc = (WSPasswordCallback) callbacks[i]; - /* - * here call a function/method to lookup the password for the - * given identifier (e.g. a user name or keystore alias) e.g.: - * pc.setPassword(passStore.getPassword(pc.getIdentfifier)) for - * Testing we supply a fixed name here. - */ - pc.setPassword("security"); - } else { - throw new UnsupportedCallbackException(callbacks[i], - "Unrecognized Callback"); - } - } - } + static final String soapMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + + "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" + + " <soapenv:Body>" + + " <ns1:testMethod xmlns:ns1=\"uri:LogTestService2\"></ns1:testMethod>" + + " </soapenv:Body>" + "</soapenv:Envelope>"; + + static final WSSecurityEngine secEngine = new WSSecurityEngine(); + + static final Crypto crypto = CryptoFactory + .getInstance("cryptoSKI.properties"); + + MessageContext msgContext; + + Message message; + + /** + * TestWSSecurity constructor <p/> + * + * @param name + * name of the test + */ + public TestWSSecurityNew15(String name) { + super(name); + } + + /** + * JUnit suite <p/> + * + * @return a junit test suite + */ + public static Test suite() { + return new TestSuite(TestWSSecurityNew15.class); + } + + /** + * Main method <p/> + * + * @param args + * command line args + */ + public static void main(String[] args) { + junit.textui.TestRunner.run(suite()); + } + + /** + * Setup method <p/> + * + * @throws Exception + * Thrown when there is a problem in setup + */ + protected void setUp() throws Exception { + AxisClient tmpEngine = new AxisClient(new NullProvider()); + msgContext = new MessageContext(tmpEngine); + message = getSOAPMessage(); + } + + /** + * Constructs a soap envelope <p/> + * + * @return soap envelope + * @throws Exception + * if there is any problem constructing the soap envelope + */ + protected Message getSOAPMessage() throws Exception { + InputStream in = new ByteArrayInputStream(soapMsg.getBytes()); + Message msg = new Message(in); + msg.setMessageContext(msgContext); + return msg; + } + + /** + * Test that encrypt and decrypt a WS-Security envelope. + * + * This test uses the RSA_15 alogrithm to transport (wrap) the symmetric + * key. + * + * @throws Exception + * Thrown when there is any problem in signing or verification + */ + public void testEncryptionDecryptionRSA15() throws Exception { + SOAPEnvelope unsignedEnvelope = message.getSOAPEnvelope(); + WSSecEncrypt builder = new WSSecEncrypt(); + builder.setUserInfo("wss4jcert"); + builder.setKeyIdentifierType(WSConstants.BST_DIRECT_REFERENCE); + builder.setSymmetricEncAlgorithm(WSConstants.TRIPLE_DES); + Document doc = unsignedEnvelope.getAsDocument(); + WSSecHeader secHeader = new WSSecHeader(); + secHeader.insertSecurityHeader(doc); + log.info("Before Encryption Triple DES...."); + + /* + * Prepare the Encrypt object with the token, setup data structure + */ + builder.prepare(doc, crypto); + + /* + * Set up the parts structure to encrypt the body + */ + SOAPConstants soapConstants = WSSecurityUtil.getSOAPConstants(doc + .getDocumentElement()); + Vector parts = new Vector(); + WSEncryptionPart encP = new WSEncryptionPart(soapConstants + .getBodyQName().getLocalPart(), soapConstants.getEnvelopeURI(), + "Content"); + parts.add(encP); + + /* + * Encrypt the parts (Body), create EncrypedData elements that reference + * the EncryptedKey, and get a ReferenceList that can be put into the + * Security header. Be sure that the ReferenceList is after the + * EncryptedKey element in the Security header (strict layout) + */ + Element refs = builder.encryptForExternalRef(null, parts); + builder.addExternalRefElement(refs, secHeader); + + /* + * now add (prepend) the EncryptedKey element, then a + * BinarySecurityToken if one was setup during prepare + */ + builder.prependToHeader(secHeader); + + builder.prependBSTElementToHeader(secHeader); + + Document encryptedDoc = doc; + log.info("After Encryption Triple DES...."); + + /* + * convert the resulting document into a message first. The + * toAxisMessage() method performs the necessary c14n call to properly + * set up the signed document and convert it into a SOAP message. Check + * that the contents can't be read (checking if we can find a specific + * substring). After that we extract it as a document again for further + * processing. + */ + + Message encryptedMsg = SOAPUtil.toAxisMessage(encryptedDoc); + if (log.isDebugEnabled()) { + log.debug("Encrypted message, RSA-15 keytransport, 3DES:"); + XMLUtils.PrettyElementToWriter(encryptedMsg.getSOAPEnvelope() + .getAsDOM(), new PrintWriter(System.out)); + } + String encryptedString = encryptedMsg.getSOAPPartAsString(); + assertTrue(encryptedString.indexOf("LogTestService2") == -1 ? true + : false); + encryptedDoc = encryptedMsg.getSOAPEnvelope().getAsDocument(); + verify(encryptedDoc); + } + + /** + * Verifies the soap envelope <p/> + * + * @param envelope + * @throws Exception + * Thrown when there is a problem in verification + */ + private void verify(Document doc) throws Exception { + secEngine.processSecurityHeader(doc, null, this, crypto); + SOAPUtil.updateSOAPMessage(doc, message); + String decryptedString = message.getSOAPPartAsString(); + if (log.isDebugEnabled()) { + System.out.println("\n" + decryptedString + "\n"); + } + assertTrue(decryptedString.indexOf("LogTestService2") > 0 ? true + : false); + } + + public void handle(Callback[] callbacks) throws IOException, + UnsupportedCallbackException { + for (int i = 0; i < callbacks.length; i++) { + if (callbacks[i] instanceof WSPasswordCallback) { + WSPasswordCallback pc = (WSPasswordCallback) callbacks[i]; + /* + * here call a function/method to lookup the password for the + * given identifier (e.g. a user name or keystore alias) e.g.: + * pc.setPassword(passStore.getPassword(pc.getIdentfifier)) for + * Testing we supply a fixed name here. + */ + pc.setPassword("security"); + } else { + throw new UnsupportedCallbackException(callbacks[i], + "Unrecognized Callback"); + } + } + } }
Modified: webservices/wss4j/trunk/xdocs/index.xml URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/xdocs/index.xml?rev=700768&r1=700767&r2=700768&view=diff ============================================================================== --- webservices/wss4j/trunk/xdocs/index.xml (original) +++ webservices/wss4j/trunk/xdocs/index.xml Wed Oct 1 06:56:10 2008 @@ -110,10 +110,10 @@ </p> <br/> </subsection> - <subsection name="Rampart: WS-Security Implementation module for Axis2"> + <subsection name="Rampart: WS-Security Implementation module for Axis2"> <p style="margin-left: 40px;">Please refer to the - <a href="http://ws.apache.org/axis2/modules/rampart/1_2/security-module.html"> - Rampart configuration guide</a> for configuration information.<br/> + <a href="http://ws.apache.org/axis2/modules/rampart/1_2/security-module.html"> + Rampart configuration guide</a> for configuration information.<br/> </p> <br/> </subsection> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
