You are viewing a plain text version of this content. The canonical link for it is here.
Posted to sandesha-dev@ws.apache.org by ch...@apache.org on 2006/07/31 15:32:15 UTC

svn commit: r427116 [2/2] - in /webservices/sandesha/trunk/java: ./ config/ src/org/apache/sandesha2/ src/org/apache/sandesha2/client/ src/org/apache/sandesha2/i18n/ src/org/apache/sandesha2/msgprocessors/ src/org/apache/sandesha2/policy/ src/org/apach...

Added: webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/security/SecurityTest.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/security/SecurityTest.java?rev=427116&view=auto
==============================================================================
--- webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/security/SecurityTest.java (added)
+++ webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/security/SecurityTest.java Mon Jul 31 06:32:13 2006
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.sandesha2.security;
+
+import java.io.File;
+
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.MessageContextConstants;
+import org.apache.axis2.transport.http.SimpleHTTPServer;
+import org.apache.sandesha2.SandeshaTestCase;
+import org.apache.sandesha2.client.SandeshaClient;
+import org.apache.sandesha2.client.SandeshaClientConstants;
+import org.apache.sandesha2.client.SequenceReport;
+import org.apache.sandesha2.util.SandeshaUtil;
+
+/**
+ * Low-level testcases for the Security handling. This test mostly checks that the code can
+ * read and write the SecurityTokenReference elements that we expect to find within the create
+ * sequence messgaes.
+ */
+public class SecurityTest extends SandeshaTestCase {
+
+	private int serverPort = DEFAULT_SERVER_TEST_PORT;
+	private SimpleHTTPServer httpServer;
+	
+	public SecurityTest(String name) {
+		super(name);
+	}
+	
+	public void setUp () throws Exception {
+		super.setUp();
+
+		String repoPath = "target" + File.separator + "repos" + File.separator + "secure-server";
+		String axis2_xml = repoPath + File.separator + "server_axis2.xml";
+
+		ConfigurationContext configContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem(repoPath,axis2_xml);
+
+		String serverPortStr = getTestProperty("test.server.port");
+		if(serverPortStr != null) serverPort = Integer.parseInt(serverPortStr);
+		
+		httpServer = new SimpleHTTPServer (configContext,serverPort);
+		httpServer.start();
+		Thread.sleep(300);
+	}
+	
+	public void tearDown () throws Exception {
+		if (httpServer!=null) {
+			httpServer.stop();
+			httpServer = null;
+		}
+		
+		Thread.sleep(300);
+		super.tearDown();
+	}
+
+	// Check that we can send a create sequence that includes a token reference.
+	public void testCreateSequence() throws Exception {
+		String to = "http://127.0.0.1:" + serverPort + "/axis2/services/RMSampleService";
+
+		String repoPath = "target" + File.separator + "repos" + File.separator + "secure-client";
+		String axis2_xml = repoPath + File.separator + "client_axis2.xml";
+		
+		ConfigurationContext configContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem(repoPath,axis2_xml);
+		ServiceClient serviceClient = new ServiceClient (configContext,null);
+		String sequenceKey = SandeshaUtil.getUUID();
+
+		Options clientOptions = new Options ();
+
+		clientOptions.setTo(new EndpointReference (to));
+		clientOptions.setProperty(MessageContextConstants.TRANSPORT_URL,to);
+		clientOptions.setProperty(SandeshaClientConstants.SEQUENCE_KEY,sequenceKey);
+		serviceClient.setOptions(clientOptions);
+		
+		SandeshaClient.createSequence(serviceClient,false);
+		
+		SequenceReport sequenceReport = null;
+		for(int i = 0; i < 15; i++) {
+			Thread.sleep(1000);
+			sequenceReport = SandeshaClient.getOutgoingSequenceReport(serviceClient);
+			if(sequenceReport.getSequenceID() != null) break;
+		}
+		assertTrue(sequenceReport.isSecureSequence());
+		
+		serviceClient.finalizeInvoke();
+	}
+
+}

Added: webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/security/UnitTestSecurityManager.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/security/UnitTestSecurityManager.java?rev=427116&view=auto
==============================================================================
--- webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/security/UnitTestSecurityManager.java (added)
+++ webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/security/UnitTestSecurityManager.java Mon Jul 31 06:32:13 2006
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.sandesha2.security;
+
+import java.util.HashMap;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisModule;
+import org.apache.sandesha2.Sandesha2Constants;
+import org.apache.sandesha2.SandeshaException;
+
+public class UnitTestSecurityManager extends SecurityManager {
+
+	private static HashMap tokens = new HashMap();
+	private static int id = 0;
+	private static String secNamespace = Sandesha2Constants.SPEC_2005_02.SEC_NS_URI;
+	
+	public UnitTestSecurityManager(ConfigurationContext context) {
+		super(context);
+	}
+	
+	public void initSecurity(AxisModule moduleDesc) {
+	}
+
+	public SecurityToken getSecurityToken(MessageContext message)
+	throws SandeshaException
+	{
+		UnitTestSecurityToken result = new UnitTestSecurityToken(id++);
+		tokens.put(getTokenRecoveryData(result), result);
+		return result;
+	}
+
+	public SecurityToken getSecurityToken(OMElement theSTR,	MessageContext message)
+	throws SandeshaException
+	{
+		OMElement reference = theSTR.getFirstChildWithName(new QName(secNamespace, "Reference"));
+		String securityTokenURI = reference.getAttributeValue(new QName("URI"));
+		String key = securityTokenURI.substring(10);
+		return (SecurityToken) tokens.get(key);
+	}
+
+	public String getTokenRecoveryData(SecurityToken token) throws SandeshaException {
+		String key = ((UnitTestSecurityToken)token).getURI();
+		return key;
+	}
+
+	public SecurityToken recoverSecurityToken(String tokenData)
+			throws SandeshaException {
+		return (SecurityToken) tokens.get(tokenData);
+	}
+
+	public void checkProofOfPossession(SecurityToken token, OMElement messagePart,
+			MessageContext message) throws SandeshaException {
+		if(token == null) {
+			throw new SandeshaException("Security manager was passed a null token");
+		}
+	}
+
+	public OMElement createSecurityTokenReference(SecurityToken token, MessageContext message) throws SandeshaException {
+		String uri = ((UnitTestSecurityToken)token).getURI();
+		String type = ((UnitTestSecurityToken)token).getValueType();
+		
+		OMFactory factory = OMAbstractFactory.getOMFactory();
+		OMNamespace secNS = factory.createOMNamespace(secNamespace, "wsse");
+		OMElement str = factory.createOMElement("SecurityTokenReference", secNS);
+		
+		OMElement ref = factory.createOMElement("Reference", secNS);
+		str.addChild(ref);
+		
+		OMAttribute uriAttr = factory.createOMAttribute("URI", null, uri);
+		OMAttribute typeAttr = factory.createOMAttribute("ValueType", null, type);
+		
+		ref.addAttribute(uriAttr);
+		ref.addAttribute(typeAttr);
+		
+		return str;
+	}
+
+
+}

Added: webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/security/UnitTestSecurityToken.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/security/UnitTestSecurityToken.java?rev=427116&view=auto
==============================================================================
--- webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/security/UnitTestSecurityToken.java (added)
+++ webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/security/UnitTestSecurityToken.java Mon Jul 31 06:32:13 2006
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.sandesha2.security;
+
+class UnitTestSecurityToken implements SecurityToken {
+
+	private int id = 0;
+	
+	UnitTestSecurityToken(int id) {
+		this.id = id;
+	}
+	
+	/**
+	 * The SecurityTokenReference that gets encoded into the CreateSequence message
+	 * includes an URI string. This method returns the value to use.
+	 */
+	String getURI() {
+		return "#BogusURI/" + id;
+	}
+
+	/**
+	 * The SecurityTokenReference that gets encoded into the CreateSequence message
+	 * includes a ValueType string. This method returns the value to use.
+	 */
+	String getValueType() {
+		return "http://schemas.xmlsoap.org/ws/2005/02/sc/sct";
+	}
+	
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org