--- cas-server-core/src/main/java/org/jasig/cas/authentication/principal/GoogleAccountsService.java	2009-03-18 08:27:22.000000000 -0700
+++ cas-server-local/src/main/java/org/jasig/cas/authentication/principal/GoogleAccountsService.java	2009-03-27 16:35:33.000000000 -0700
@@ -25,6 +25,9 @@
 import java.util.zip.Inflater;
 import java.util.zip.InflaterInputStream;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
 /**
  * Implementation of a Service that supports Google Accounts (eventually a more
  * generic SAML2 support will come).
@@ -160,8 +163,36 @@
         c.setTime(new Date());
         c.add(Calendar.YEAR, 1);
         
-        samlResponse = samlResponse.replace("<USERNAME_STRING>", getPrincipal()
-            .getId());
+	/**
+	 * samlResponse = samlResponse.replace("<USERNAME_STRING>", getPrincipal()
+	 *   .getId());
+	 */
+        /**
+         * Modify Google return to pass in EmailAddress attribute, if exists.
+         *
+	 */
+	String username = getPrincipal().getId();
+	Map<String, Object> attributes = getPrincipal().getAttributes();
+
+	/** Log instance for logging events, info, warnings, errors, etc. */
+	final Log log = LogFactory.getLog(this.getClass());
+
+        if (log.isInfoEnabled()) {
+            log.info("User [" + getPrincipal().getId() + "] has " + attributes.size() + " principal attributes");
+	}
+
+	/**
+	 * try to find the attribute mapped in the CredentialsToLDAPAttributePrincipalResolver
+	 * configuration in deployerConfigContext.xml
+	 */
+	if(attributes.containsKey("EmailAddress")) {
+		username = (String)attributes.get("EmailAddress");
+	        if (log.isInfoEnabled()) {
+       			log.info("User [" + getPrincipal().getId() + "]: using EmailID [" + username + "]");
+        	}
+	}
+	samlResponse = samlResponse.replace("<USERNAME_STRING>",username);
+
         samlResponse = samlResponse.replace("<RESPONSE_ID>", createID());
         samlResponse = samlResponse.replace("<ISSUE_INSTANT>", SamlUtils
             .getCurrentDateAndTime());
