diff --git a/build.gradle b/build.gradle index d9fa0e1f..f74cfbf5 100644 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,7 @@ repositories { } allprojects { - version = '1.0.0-RC4' + version = '1.0.0-RC5' group = 'it.pagopa.tech.lollipop-consumer-java-sdk' sourceCompatibility = '11' targetCompatibility = '11' diff --git a/core/src/main/java/it/pagopa/tech/lollipop/consumer/config/LollipopConsumerRequestConfig.java b/core/src/main/java/it/pagopa/tech/lollipop/consumer/config/LollipopConsumerRequestConfig.java index a3563364..b8ba5bcd 100644 --- a/core/src/main/java/it/pagopa/tech/lollipop/consumer/config/LollipopConsumerRequestConfig.java +++ b/core/src/main/java/it/pagopa/tech/lollipop/consumer/config/LollipopConsumerRequestConfig.java @@ -35,8 +35,6 @@ public class LollipopConsumerRequestConfig { // assertion validation parameters @Builder.Default private int assertionExpireInDays = 365; - @Builder.Default private String assertionNotBeforeDateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"; - @Builder.Default private String assertionInstantDateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"; @Builder.Default private String samlNamespaceAssertion = "urn:oasis:names:tc:SAML:2.0:assertion"; diff --git a/core/src/main/java/it/pagopa/tech/lollipop/consumer/service/impl/AssertionVerifierServiceImpl.java b/core/src/main/java/it/pagopa/tech/lollipop/consumer/service/impl/AssertionVerifierServiceImpl.java index 608cba4c..7c2cfafb 100644 --- a/core/src/main/java/it/pagopa/tech/lollipop/consumer/service/impl/AssertionVerifierServiceImpl.java +++ b/core/src/main/java/it/pagopa/tech/lollipop/consumer/service/impl/AssertionVerifierServiceImpl.java @@ -24,11 +24,7 @@ import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Base64; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.TimeUnit; import javax.inject.Inject; import javax.xml.parsers.DocumentBuilder; @@ -37,6 +33,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.wss4j.common.ext.WSSecurityException; import org.apache.wss4j.common.saml.SAMLKeyInfo; +import org.joda.time.format.ISODateTimeFormat; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -150,10 +147,8 @@ protected boolean validateAssertionPeriod(Document assertionDoc) long notBeforeMilliseconds; try { notBeforeMilliseconds = - new SimpleDateFormat(lollipopRequestConfig.getAssertionNotBeforeDateFormat()) - .parse(notBefore) - .getTime(); - } catch (ParseException e) { + ISODateTimeFormat.dateTimeParser().parseDateTime(notBefore).getMillis(); + } catch (UnsupportedOperationException | IllegalArgumentException e) { throw new AssertionPeriodException( AssertionPeriodException.ErrorCode.ERROR_PARSING_ASSERTION_NOT_BEFORE_DATE, e.getMessage(), @@ -442,15 +437,15 @@ private String getPublicKey(String publicKey) { } private String parseInstantToMillis(String instant) { - String instantDateFormat = lollipopRequestConfig.getAssertionInstantDateFormat(); try { instant = - Long.toString(new SimpleDateFormat(instantDateFormat).parse(instant).getTime()); - } catch (ParseException e) { + Long.toString( + ISODateTimeFormat.dateTimeParser().parseDateTime(instant).getMillis()); + } catch (UnsupportedOperationException | IllegalArgumentException e) { String msg = String.format( - "Retrieved instant %s does not match expected format %s", - instant, instantDateFormat); + "Retrieved instant %s does not match expected ISO datetime format", + instant); log.debug(msg); } return instant; diff --git a/core/src/test/java/it/pagopa/tech/lollipop/consumer/TestUtils.java b/core/src/test/java/it/pagopa/tech/lollipop/consumer/TestUtils.java index 86161d6a..8e861954 100644 --- a/core/src/test/java/it/pagopa/tech/lollipop/consumer/TestUtils.java +++ b/core/src/test/java/it/pagopa/tech/lollipop/consumer/TestUtils.java @@ -26,7 +26,7 @@ public class TestUtils { + " xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"" + " ID=\"_6b9580aa-08b1-4f19-8fb6-8b670d070bad\"" + " IssueInstant=\"2023-02-28T16:27:25.400Z\" Version=\"2.0\">https://app-backend.io.italia.it"; public static final String ASSERTION_XML_WITH_EXPIRED_PERIOD = "