[Carbon-dev] svn commit r23160 - trunk/carbon-components/security/org.wso2.carbon.security.mgt/src/main/java/org/wso2/carbon/security/sts/service/util

prabath at wso2.com prabath at wso2.com
Fri Oct 31 06:10:20 PDT 2008


Author: prabath
Date: Fri Oct 31 06:10:20 2008
New Revision: 23160
URL: http://wso2.org/svn/browse/wso2?view=rev&revision=23160

Log:
sts functionality

Added:
   trunk/carbon-components/security/org.wso2.carbon.security.mgt/src/main/java/org/wso2/carbon/security/sts/service/util/STSUtil.java

Added: trunk/carbon-components/security/org.wso2.carbon.security.mgt/src/main/java/org/wso2/carbon/security/sts/service/util/STSUtil.java
URL: http://wso2.org/svn/browse/wso2/trunk/carbon-components/security/org.wso2.carbon.security.mgt/src/main/java/org/wso2/carbon/security/sts/service/util/STSUtil.java?pathrev=23160
==============================================================================
--- (empty file)
+++ trunk/carbon-components/security/org.wso2.carbon.security.mgt/src/main/java/org/wso2/carbon/security/sts/service/util/STSUtil.java	Fri Oct 31 06:10:20 2008
@@ -0,0 +1,106 @@
+package org.wso2.carbon.security.sts.service.util;
+
+import java.util.Properties;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.rahas.impl.SAMLTokenIssuerConfig;
+import org.apache.rahas.impl.TokenIssuerUtil;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.wso2.carbon.core.ServerManager;
+import org.wso2.carbon.core.util.KeyStoreManager;
+import org.wso2.carbon.core.util.KeyStoreUtil;
+import org.wso2.carbon.registry.service.RegistryService;
+import org.wso2.carbon.security.keystore.KeyStoreAdmin;
+import org.wso2.carbon.security.keystore.service.KeyStoreData;
+import org.wso2.carbon.security.util.RampartConfigUtil;
+import org.wso2.carbon.security.util.ServerCrypto;
+import org.wso2.carbon.utils.ServerConfiguration;
+import org.wso2.carbon.utils.ServerConstants;
+import org.wso2.registry.Registry;
+import org.wso2.registry.Resource;
+
+public class STSUtil {
+
+	public static void updateSTSService(AxisConfiguration config) throws Exception {
+
+		AxisService service = null;
+		ServerManager manager = null;
+		BundleContext context = null;
+		ServiceReference reference = null;
+		RegistryService registryService = null;
+		Registry systemRegistry = null;
+		Resource resource = null;
+		String keyAlias = null;
+		String keyPassword = null;
+		KeyStoreAdmin admin = null;
+		KeyStoreData[] keystores = null;
+		String privateKeyAlias = null;
+		String keyStoreName = null;
+		String issuerName = null;
+		ServerConfiguration serverConfig = null;
+
+		manager = ServerManager.getInstance();
+		context = manager.getBundleContext();
+		reference = context.getServiceReference(RegistryService.class.getName());
+		registryService = (RegistryService) context.getService(reference);
+		systemRegistry = registryService.getSystemRegistry();
+		resource = systemRegistry.get("/carbon/connection/props");
+		issuerName = resource.getProperty("host");
+
+		serverConfig = ServerConfiguration.getInstance();
+		keyAlias = serverConfig.getFirstProperty("Security.KeyStore.KeyAlias");
+		keyPassword = serverConfig.getFirstProperty("Security.KeyStore.KeyPassword");
+
+		if (issuerName == null) {
+			// HostName not set :-( use wso2wsas-sts
+			issuerName = ServerConstants.STS_NAME;
+		}
+
+		admin = new KeyStoreAdmin(systemRegistry);
+		keystores = admin.getKeyStores();
+
+		for (int i = 0; i < keystores.length; i++) {
+			if (KeyStoreUtil.isPrimaryStore(keystores[i].getKeyStoreName())) {
+				keyStoreName = keystores[i].getKeyStoreName();
+				privateKeyAlias = KeyStoreUtil.getPrivateKeyAlias(KeyStoreManager.getInstance()
+						.getKeyStore(keyStoreName));
+				break;
+			}
+		}
+
+		if (privateKeyAlias != null) {			
+			service = config.getService(ServerConstants.STS_NAME);
+
+			String cryptoProvider = ServerCrypto.class.getName();
+
+			Properties props = RampartConfigUtil.getServerCryptoProperties(
+					new String[] { keyStoreName }, keyStoreName, privateKeyAlias);
+
+			SAMLTokenIssuerConfig stsSamlConfig = new SAMLTokenIssuerConfig(issuerName,
+					cryptoProvider, props);
+			stsSamlConfig.setIssuerKeyAlias(keyAlias);
+			stsSamlConfig.setIssuerKeyPassword(keyPassword);
+			stsSamlConfig.setAddRequestedAttachedRef(true);
+			stsSamlConfig.setAddRequestedUnattachedRef(true);
+			stsSamlConfig.setKeyComputation(2);
+			stsSamlConfig.setProofKeyType(TokenIssuerUtil.BINARY_SECRET);
+			try {
+				// remove param is exists
+				Parameter param = service.getParameter(SAMLTokenIssuerConfig.SAML_ISSUER_CONFIG
+						.getLocalPart());
+				if (param == null) {
+					// Add new parameter
+					service.addParameter(stsSamlConfig.getParameter());
+				}
+			} catch (AxisFault e) {
+				e.printStackTrace();
+			}
+		}
+
+	}
+}



More information about the Carbon-dev mailing list