[jboss-svn-commits] JBL Code SVN: r36295 - labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/repository.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Dec 9 01:10:23 EST 2010
Author: kurt.stam at jboss.com
Date: 2010-12-09 01:10:23 -0500 (Thu, 09 Dec 2010)
New Revision: 36295
Modified:
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/repository/RepositoryStartupService.java
Log:
GUVNORSOA-47, merging ModeShape Integration allowing the passwords for admin and mailman to be encrypted
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/repository/RepositoryStartupService.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/repository/RepositoryStartupService.java 2010-12-09 06:06:20 UTC (rev 36294)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/repository/RepositoryStartupService.java 2010-12-09 06:10:23 UTC (rev 36295)
@@ -33,10 +33,13 @@
+import java.math.BigInteger;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
+import javax.crypto.Cipher;
+import javax.crypto.spec.SecretKeySpec;
import javax.jcr.LoginException;
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
@@ -67,9 +70,12 @@
private static final Logger log = LoggerFactory.getLogger(RepositoryStartupService.class);
private static final String ADMIN = "admin";
+ private static final String ADMIN_USER_PROPERTY = "org.drools.repository.admin.username";
private static final String ADMIN_PASSWORD_PROPERTY = "org.drools.repository.admin.password";
private static final String MAILMAN = "mailman";
+ private static final String MAILMAN_USER_PROPERTY = "org.drools.repository.mailman.username";
private static final String MAILMAN_PASSWORD_PROPERTY = "org.drools.repository.mailman.password";
+ private static final String SECURE_PASSWORDS_PROPERTY = "org.drools.repository.secure.passwords";
private RulesRepositoryConfigurator configurator;
@@ -94,9 +100,16 @@
@Create
public void create() {
repository = getRepositoryInstance();
+ String username = "admin";
+ if (properties.containsKey(ADMIN_USER_PROPERTY)) {
+ username = properties.get(ADMIN_USER_PROPERTY);
+ }
String password = "admin";
if (properties.containsKey(ADMIN_PASSWORD_PROPERTY)) {
password = properties.get(ADMIN_PASSWORD_PROPERTY);
+ if ("true".equalsIgnoreCase(properties.get(SECURE_PASSWORDS_PROPERTY))) {
+ password = decode(password);
+ }
} else {
log.debug("Could not find property " + ADMIN_PASSWORD_PROPERTY + " for user " + ADMIN);
}
@@ -121,9 +134,16 @@
/** Start up the mailbox, flush out any messages that were left */
private void startMailboxService() {
+ String username = "mailman";
+ if (properties.containsKey(MAILMAN_USER_PROPERTY)) {
+ username = properties.get(MAILMAN_USER_PROPERTY);
+ }
String password = "mailman";
if (properties.containsKey(MAILMAN_PASSWORD_PROPERTY)) {
password = properties.get(MAILMAN_PASSWORD_PROPERTY);
+ if ("true".equalsIgnoreCase(properties.get(SECURE_PASSWORDS_PROPERTY))) {
+ password = decode(password);
+ }
} else {
log.debug("Could not find property " + MAILMAN_PASSWORD_PROPERTY + " for user " + MAILMAN);
}
@@ -199,5 +219,41 @@
throw new RulesRepositoryException( e );
}
}
+
+
+
+ private static String decode(String secret)
+ {
+ String decodedPassword = secret;
+ try {
+ byte[] kbytes = "jaas is the way".getBytes();
+ SecretKeySpec key = new SecretKeySpec(kbytes, "Blowfish");
+
+ BigInteger n = new BigInteger(secret, 16);
+ byte[] encoding = n.toByteArray();
+
+ //SECURITY-344: fix leading zeros
+ if (encoding.length % 8 != 0)
+ {
+ int length = encoding.length;
+ int newLength = ((length / 8) + 1) * 8;
+ int pad = newLength - length; //number of leading zeros
+ byte[] old = encoding;
+ encoding = new byte[newLength];
+ for (int i = old.length - 1; i >= 0; i--)
+ {
+ encoding[i + pad] = old[i];
+ }
+ }
+
+ Cipher cipher = Cipher.getInstance("Blowfish");
+ cipher.init(Cipher.DECRYPT_MODE, key);
+ byte[] decode = cipher.doFinal(encoding);
+ decodedPassword = new String(decode);
+ } catch (Exception e) {
+ log.error(e.getMessage(),e);
+ }
+ return decodedPassword;
+ }
}
\ No newline at end of file
More information about the jboss-svn-commits
mailing list