[jboss-svn-commits] JBL Code SVN: r30746 - labs/jbosstm/branches/JBOSSTS_4_2_3_SP5_CP08_JBTM-666/atsintegration/classes/com/arjuna/ats/internal/jbossatx/jta.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Dec 17 20:21:21 EST 2009


Author: jbertram at redhat.com
Date: 2009-12-17 20:21:21 -0500 (Thu, 17 Dec 2009)
New Revision: 30746

Modified:
   labs/jbosstm/branches/JBOSSTS_4_2_3_SP5_CP08_JBTM-666/atsintegration/classes/com/arjuna/ats/internal/jbossatx/jta/AppServerJDBCXARecovery.java
Log:
JBPAPP-3289

Modified: labs/jbosstm/branches/JBOSSTS_4_2_3_SP5_CP08_JBTM-666/atsintegration/classes/com/arjuna/ats/internal/jbossatx/jta/AppServerJDBCXARecovery.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_2_3_SP5_CP08_JBTM-666/atsintegration/classes/com/arjuna/ats/internal/jbossatx/jta/AppServerJDBCXARecovery.java	2009-12-18 01:09:34 UTC (rev 30745)
+++ labs/jbosstm/branches/JBOSSTS_4_2_3_SP5_CP08_JBTM-666/atsintegration/classes/com/arjuna/ats/internal/jbossatx/jta/AppServerJDBCXARecovery.java	2009-12-18 01:21:21 UTC (rev 30746)
@@ -211,9 +211,18 @@
                 {
                 	ObjectName _objectName = new ObjectName("jboss.security:service=XMLLoginConfig");
                 	String config = (String)server.invoke(_objectName, "displayAppConfig", new Object[] {securityDomainName}, new String[] {"java.lang.String"});
+                	String loginModuleClass = getValueForLoginModuleClass(config);
             		_dbUsername = getValueForKey(config, _USERNAME);
             		String _encryptedPassword = getValueForKey(config, _PASSWORD);
-            		_dbPassword = new String (decode(_encryptedPassword));
+            		if (loginModuleClass.trim().equals("org.jboss.resource.security.SecureIdentityLoginModule"))
+            		{
+            		    _dbPassword = new String (decode(_encryptedPassword));
+            		}
+            		else if (loginModuleClass.trim().equals("org.jboss.resource.security.JaasSecurityDomainIdentityLoginModule"))
+            		{
+            		    String jaasSecurityDomain = getValueForKey(config, "jaasSecurityDomain");
+            		    _dbPassword = new String (decodePBE(server, _encryptedPassword, jaasSecurityDomain));
+            		}
             		_encrypted = true;
                 }
 
@@ -439,6 +448,17 @@
 		return "";
 	}
     
+    private String getValueForLoginModuleClass(String config)
+    {
+		Pattern usernamePattern = Pattern.compile("(" + _MODULE + ":)(.*)");
+		Matcher m = usernamePattern.matcher(config);
+		if(m.find())
+		{
+			return m.group(2);
+		}
+		return "";
+	}
+    
     private static String decode(String secret) throws NoSuchPaddingException, NoSuchAlgorithmException,
             InvalidKeyException, BadPaddingException, IllegalBlockSizeException
     {
@@ -454,6 +474,13 @@
 	    return new String(decode);
 	 }
 
+    private static String decodePBE(MBeanServerConnection server, String password, String jaasSecurityDomain) throws Exception
+    {
+	     byte[] secret = (byte[]) server.invoke(new ObjectName(jaasSecurityDomain), "decode64", new Object[] {password}, new String[] {"java.lang.String"});
+         return new String(secret, "UTF-8");
+	}
+
+
     private boolean _supportsIsValidMethod;
     private XAConnection _connection;
     private XADataSource                 _dataSource;
@@ -470,6 +497,7 @@
     private final String _JNDINAME = "jndiname";
     private final String _USERNAME = "username";
     private final String _PASSWORD = "password";
+    private final String _MODULE = "LoginModule Class";
     private final String _DELIMITER = ",";
     
     private Logger log = org.jboss.logging.Logger.getLogger(AppServerJDBCXARecovery.class);



More information about the jboss-svn-commits mailing list