User: starksm Date: 01/11/09 02:22:34 Modified: src/main/org/jboss/security/plugins Tag: Branch_2_4 JaasSecurityDomain.java Log: Allow the keystore attribute to be a url, file or resource path Revision Changes Path No revision No revision 1.1.2.2 +58 -21 jbosssx/src/main/org/jboss/security/plugins/Attic/JaasSecurityDomain.java Index: JaasSecurityDomain.java =================================================================== RCS file: /cvsroot/jboss/jbosssx/src/main/org/jboss/security/plugins/Attic/JaasSecurityDomain.java,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -u -r1.1.2.1 -r1.1.2.2 --- JaasSecurityDomain.java 2001/09/26 06:36:35 1.1.2.1 +++ JaasSecurityDomain.java 2001/11/09 10:22:34 1.1.2.2 @@ -8,8 +8,9 @@ import java.io.IOException; import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileInputStream; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; import java.security.KeyStore; import javax.management.MBeanServer; import javax.management.MBeanServerFactory; @@ -24,22 +25,23 @@ import org.jboss.security.SecurityDomain; import org.jboss.util.ServiceMBean; -/** The JaasSecurityDomain is +/** The JaasSecurityDomain is an extension of JaasSecurityManager that addes + the notion of a KeyStore, and JSSE KeyManagerFactory and TrustManagerFactory + for supporting SSL and other cryptographic use cases. - @author [EMAIL PROTECTED] - @version $Revision: 1.1.2.1 $ + @version $Revision: 1.1.2.2 $ */ public class JaasSecurityDomain extends JaasSecurityManager implements SecurityDomain, JaasSecurityDomainMBean { private int state; - /** The KeyStore associated with the + /** The KeyStore associated with the security domain. */ private KeyStore keyStore; private KeyManagerFactory keyMgr; private String keyStoreType = "JKS"; - private String keyStoreFile; + private URL keyStoreURL; private char[] keyStorePassword; /** Creates a default JaasSecurityDomain for with a securityDomain @@ -84,19 +86,22 @@ { if (getState() != STOPPED) return; - + state = STARTING; log.info("Starting"); - if( keyStoreFile != null ) + if( keyStoreURL != null ) { keyStore = KeyStore.getInstance(keyStoreType); - FileInputStream fis = new FileInputStream(keyStoreFile); - keyStore.load(fis, keyStorePassword); + InputStream is = keyStoreURL.openStream(); + keyStore.load(is, keyStorePassword); String algorithm = KeyManagerFactory.getDefaultAlgorithm(); keyMgr = KeyManagerFactory.getInstance(algorithm); keyMgr.init(keyStore, keyStorePassword); } - // Register with the + /* Register with the JaasSecurityManagerServiceMBean. This allows this + JaasSecurityDomain to function as the security manager for security-domain + elements that declare java:/jaas/xxx for our security domain name. + */ MBeanServer server = (MBeanServer) MBeanServerFactory.findMBeanServer(null).get(0); ObjectName jaasMgr = new ObjectName(JaasSecurityManagerServiceMBean.OBJECT_NAME); Object[] params = {getSecurityDomain(), this}; @@ -135,16 +140,48 @@ { this.keyStoreType = type; } - public String getKeyStoreFile() + public String getKeyStoreURL() { - return this.keyStoreFile; - } - public void setKeyStoreFile(String file) throws IOException - { - this.keyStoreFile = file; - File tst = new File(file); - if( tst.exists() == false ) - throw new FileNotFoundException("keystore file does not exist: "+file); + String url = null; + if( keyStoreURL != null ) + url = keyStoreURL.toExternalForm(); + return url; + } + public void setKeyStoreURL(String storeURL) throws IOException + { + keyStoreURL = null; + // First see if this is a URL + try + { + keyStoreURL = new URL(storeURL); + } + catch(MalformedURLException e) + { + // Not a URL or a protocol without a handler + } + + // Next try to locate this as file path + if( keyStoreURL == null ) + { + File tst = new File(storeURL); + if( tst.exists() == true ) + keyStoreURL = tst.toURL(); + } + + // Last try to locate this as a classpath resource + if( keyStoreURL == null ) + { + ClassLoader loader = Thread.currentThread().getContextClassLoader(); + keyStoreURL = loader.getResource(storeURL); + } + + // Fail if no valid key store was located + if( keyStoreURL == null ) + { + String msg = "Failed to find url="+storeURL+" as a URL, file or resource"; + throw new MalformedURLException(msg); + } + log.debug("Using KeyStore="+keyStoreURL.toExternalForm()); } public void setKeyStorePass(String password) {
_______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development