diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/util/CommonUtils.java b/cas-client-core/src/main/java/org/jasig/cas/client/util/CommonUtils.java index eb2efaa..7c1728b 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/util/CommonUtils.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/util/CommonUtils.java @@ -23,7 +23,11 @@ import java.net.URLEncoder; import java.net.URL; import java.net.HttpURLConnection; import java.net.MalformedURLException; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.Collection; +import java.util.Date; +import java.util.TimeZone; /** * Common utilities so that we don't need to include Commons Lang. @@ -51,6 +55,12 @@ public final class CommonUtils { // nothing to do } + public static String formatForUtcTime(final Date date) { + final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); + dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); + return dateFormat.format(date); + } + /** * Check whether the object is null or not. If it is, throw an exception and * display the message. diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Saml11TicketValidator.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Saml11TicketValidator.java index f339fff..bd1440f 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Saml11TicketValidator.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Saml11TicketValidator.java @@ -7,14 +7,13 @@ package org.jasig.cas.client.validation; import org.jasig.cas.client.authentication.AttributePrincipal; import org.jasig.cas.client.authentication.AttributePrincipalImpl; +import org.jasig.cas.client.util.CommonUtils; import org.opensaml.*; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.util.*; -import java.text.DateFormat; -import java.text.SimpleDateFormat; import javax.net.ssl.HttpsURLConnection; @@ -108,7 +107,7 @@ public final class Saml11TicketValidator extends AbstractUrlBasedTicketValidator return false; } - final long currentTime = new Date().getTime(); + final long currentTime = getCurrentTimeInUtc().getTime(); if (currentTime + tolerance < notBefore.getTime()) { log.debug("skipping assertion that's not yet valid..."); @@ -162,14 +161,14 @@ public final class Saml11TicketValidator extends AbstractUrlBasedTicketValidator return list; } - private static String getFormattedDateAndTime(final Date date) { - final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); - return dateFormat.format(date); + private Date getCurrentTimeInUtc() { + final Calendar c = Calendar.getInstance(); + c.setTimeZone(TimeZone.getTimeZone("UTC")); + return c.getTime(); } - protected String retrieveResponseFromServer(final URL validationUrl, final String ticket) { - final String MESSAGE_TO_SEND = "" + final String MESSAGE_TO_SEND = "" + "" + ticket + ""; diff --git a/cas-client-core/src/test/java/org/jasig/cas/client/validation/Saml11TicketValidatorTests.java b/cas-client-core/src/test/java/org/jasig/cas/client/validation/Saml11TicketValidatorTests.java index 6619fc8..b943da4 100644 --- a/cas-client-core/src/test/java/org/jasig/cas/client/validation/Saml11TicketValidatorTests.java +++ b/cas-client-core/src/test/java/org/jasig/cas/client/validation/Saml11TicketValidatorTests.java @@ -1,10 +1,9 @@ package org.jasig.cas.client.validation; import org.jasig.cas.client.PublicTestHttpServer; +import org.jasig.cas.client.util.CommonUtils; import java.io.UnsupportedEncodingException; -import java.text.DateFormat; -import java.text.SimpleDateFormat; import java.util.Date; /** @@ -48,7 +47,7 @@ public final class Saml11TicketValidatorTests extends AbstractTicketValidatorTes final Date now = new Date(); final Date before = new Date(now.getTime() - 5000); final Date after = new Date(now.getTime() + 200000000); - final String RESPONSE = "testtestPrincipalurn:oasis:names:tc:SAML:1.0:cm:artifact"; + final String RESPONSE = "testtestPrincipalurn:oasis:names:tc:SAML:1.0:cm:artifact"; PublicTestHttpServer.instance().content = RESPONSE .getBytes(PublicTestHttpServer.instance().encoding); try { @@ -57,15 +56,5 @@ public final class Saml11TicketValidatorTests extends AbstractTicketValidatorTes } catch (final TicketValidationException e) { fail(e.toString()); } - } - - public static String getFormattedDateAndTime(final Date date) { - final DateFormat dateFormat = new SimpleDateFormat( - "yyyy-MM-dd'T'HH:mm:ss'Z'"); - // Google Does not set this. - // dateFormat.setTimeZone(UTC_TIME_ZONE); - return dateFormat.format(date); - } - }