diff --git a/.github/workflows/coverity-analysis.yml b/.github/workflows/coverity-analysis.yml index f8035d46..0abc68b1 100644 --- a/.github/workflows/coverity-analysis.yml +++ b/.github/workflows/coverity-analysis.yml @@ -20,14 +20,14 @@ jobs: - uses: actions/setup-java@v4 with: distribution: zulu - java-version: 11 + java-version: 17 - name: Cache Maven packages uses: actions/cache@v4 with: path: ~/.m2 - key: ${{ runner.os }}-m2-v8-${{ hashFiles('**/pom.xml') }} - restore-keys: ${{ runner.os }}-m2-v8 + key: ${{ runner.os }}-m2-v17-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-m2-v17 - name: Download Coverity Build Tool run: | diff --git a/.github/workflows/maven-build-example.yml b/.github/workflows/maven-build-example.yml index 3893cbd4..8514898d 100644 --- a/.github/workflows/maven-build-example.yml +++ b/.github/workflows/maven-build-example.yml @@ -33,9 +33,9 @@ jobs: key: ${{ runner.os }}-m2-v17-${{ secrets.CACHE_VERSION }}-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-m2-v17-${{ secrets.CACHE_VERSION }} - - name: Build - run: mvn --batch-mode compile + - name: Install current state of web-eid-authtoken-validation-java locally for web-eid-springboot-example build + working-directory: . + run: mvn --batch-mode install - name: Test and package run: mvn --batch-mode package - diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-build.yml index 6528af68..e4a18157 100644 --- a/.github/workflows/maven-build.yml +++ b/.github/workflows/maven-build.yml @@ -20,14 +20,14 @@ jobs: - uses: actions/setup-java@v4 with: distribution: zulu - java-version: 11 + java-version: 17 - name: Cache Maven packages uses: actions/cache@v4 with: path: ~/.m2 - key: ${{ runner.os }}-m2-v8-${{ hashFiles('**/pom.xml') }} - restore-keys: ${{ runner.os }}-m2-v8 + key: ${{ runner.os }}-m2-v17-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-m2-v17 - name: Build run: mvn --batch-mode compile diff --git a/.github/workflows/maven-deploy.yml b/.github/workflows/maven-deploy.yml index 29a316f5..f8aa4048 100644 --- a/.github/workflows/maven-deploy.yml +++ b/.github/workflows/maven-deploy.yml @@ -14,14 +14,14 @@ jobs: - uses: actions/setup-java@v4 with: distribution: zulu - java-version: 11 + java-version: 17 - name: Cache Maven packages uses: actions/cache@v4 with: path: ~/.m2 - key: ${{ runner.os }}-m2-v8-${{ hashFiles('**/pom.xml') }} - restore-keys: ${{ runner.os }}-m2-v8 + key: ${{ runner.os }}-m2-v17-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-m2-v17 - name: Deploy to GitLab Package Repository # GitHub Packages env: diff --git a/.github/workflows/sonarcloud-analysis.yml b/.github/workflows/sonarcloud-analysis.yml index ea78e973..52da39ce 100644 --- a/.github/workflows/sonarcloud-analysis.yml +++ b/.github/workflows/sonarcloud-analysis.yml @@ -35,7 +35,7 @@ jobs: uses: actions/cache@v4 with: path: ~/.m2 - key: ${{ runner.os }}-m2-v11-${{ hashFiles('**/pom.xml') }} + key: ${{ runner.os }}-m2-v17-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-m2-v17 - name: Build and analyze env: diff --git a/example/pom.xml b/example/pom.xml index b50adcec..88c593be 100644 --- a/example/pom.xml +++ b/example/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 3.5.3 + 4.0.6 eu.webeid.example diff --git a/example/src/main/java/eu/webeid/example/config/SameSiteCookieConfiguration.java b/example/src/main/java/eu/webeid/example/config/SameSiteCookieConfiguration.java index 74602523..74af4842 100644 --- a/example/src/main/java/eu/webeid/example/config/SameSiteCookieConfiguration.java +++ b/example/src/main/java/eu/webeid/example/config/SameSiteCookieConfiguration.java @@ -23,7 +23,7 @@ package eu.webeid.example.config; import org.apache.tomcat.util.http.Rfc6265CookieProcessor; -import org.springframework.boot.web.embedded.tomcat.TomcatContextCustomizer; +import org.springframework.boot.tomcat.TomcatContextCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; diff --git a/example/src/main/java/eu/webeid/example/security/WebEidAjaxLoginProcessingFilter.java b/example/src/main/java/eu/webeid/example/security/WebEidAjaxLoginProcessingFilter.java index 4782ee93..485dba10 100644 --- a/example/src/main/java/eu/webeid/example/security/WebEidAjaxLoginProcessingFilter.java +++ b/example/src/main/java/eu/webeid/example/security/WebEidAjaxLoginProcessingFilter.java @@ -22,8 +22,8 @@ package eu.webeid.example.security; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectReader; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectReader; import eu.webeid.example.security.ajax.AjaxAuthenticationFailureHandler; import eu.webeid.example.security.ajax.AjaxAuthenticationSuccessHandler; import eu.webeid.example.security.dto.AuthTokenDTO; diff --git a/example/src/main/java/eu/webeid/example/security/ajax/AjaxAuthenticationSuccessHandler.java b/example/src/main/java/eu/webeid/example/security/ajax/AjaxAuthenticationSuccessHandler.java index a5ea20d0..2b610463 100644 --- a/example/src/main/java/eu/webeid/example/security/ajax/AjaxAuthenticationSuccessHandler.java +++ b/example/src/main/java/eu/webeid/example/security/ajax/AjaxAuthenticationSuccessHandler.java @@ -23,9 +23,8 @@ package eu.webeid.example.security.ajax; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectWriter; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectWriter; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.slf4j.Logger; @@ -70,7 +69,7 @@ public static class AuthSuccessDTO { @JsonProperty("auth") private String auth; - public static String asJson(Authentication authentication) throws JsonProcessingException { + public static String asJson(Authentication authentication) { final AuthSuccessDTO dto = new AuthSuccessDTO(); dto.sub = authentication.getName(); dto.auth = authentication.getAuthorities().toString(); diff --git a/example/src/test/java/eu/webeid/example/WebApplicationTest.java b/example/src/test/java/eu/webeid/example/WebApplicationTest.java index f7f5a3de..b6d5d56c 100644 --- a/example/src/test/java/eu/webeid/example/WebApplicationTest.java +++ b/example/src/test/java/eu/webeid/example/WebApplicationTest.java @@ -110,7 +110,7 @@ public void validateOcspResponse(XadesSignature xadesSignature) { MvcResult result = HttpHelper.login(mvcBuilder, session, ObjectMother.mockAuthToken()); session = (MockHttpSession) result.getRequest().getSession(); MockHttpServletResponse response = result.getResponse(); - assertEquals("{\"sub\":\"JAAK-KRISTJAN JÕEORG\",\"auth\":\"[ROLE_USER]\"}", response.getContentAsString()); + assertEquals("{\"auth\":\"[ROLE_USER]\",\"sub\":\"JAAK-KRISTJAN JÕEORG\"}", response.getContentAsString()); /* Example how to test file upload. response = HttpHelper.upload(mvcBuilder, session, mockMultipartFile()); diff --git a/example/src/test/java/eu/webeid/example/testutil/ObjectMother.java b/example/src/test/java/eu/webeid/example/testutil/ObjectMother.java index 288b1368..91003f2d 100644 --- a/example/src/test/java/eu/webeid/example/testutil/ObjectMother.java +++ b/example/src/test/java/eu/webeid/example/testutil/ObjectMother.java @@ -22,8 +22,7 @@ package eu.webeid.example.testutil; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import eu.webeid.example.service.dto.SignatureAlgorithmDTO; import eu.webeid.security.authtoken.WebEidAuthToken; import org.apache.commons.lang3.ArrayUtils; @@ -50,17 +49,13 @@ public class ObjectMother { private static final WebEidAuthToken VALID_AUTH_TOKEN; static { - try { - VALID_AUTH_TOKEN = MAPPER.readValue( - "{\"algorithm\":\"ES384\"," + - "\"unverifiedCertificate\":\"MIIEBDCCA2WgAwIBAgIQY5OGshxoPMFg+Wfc0gFEaTAKBggqhkjOPQQDBDBgMQswCQYDVQQGEwJFRTEbMBkGA1UECgwSU0sgSUQgU29sdXRpb25zIEFTMRcwFQYDVQRhDA5OVFJFRS0xMDc0NzAxMzEbMBkGA1UEAwwSVEVTVCBvZiBFU1RFSUQyMDE4MB4XDTIxMDcyMjEyNDMwOFoXDTI2MDcwOTIxNTk1OVowfzELMAkGA1UEBhMCRUUxKjAoBgNVBAMMIUrDlUVPUkcsSkFBSy1LUklTVEpBTiwzODAwMTA4NTcxODEQMA4GA1UEBAwHSsOVRU9SRzEWMBQGA1UEKgwNSkFBSy1LUklTVEpBTjEaMBgGA1UEBRMRUE5PRUUtMzgwMDEwODU3MTgwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQmwEKsJTjaMHSaZj19hb9EJaJlwbKc5VFzmlGMFSJVk4dDy+eUxa5KOA7tWXqzcmhh5SYdv+MxcaQKlKWLMa36pfgv20FpEDb03GCtLqjLTRZ7649PugAQ5EmAqIic29CjggHDMIIBvzAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIDiDBHBgNVHSAEQDA+MDIGCysGAQQBg5EhAQIBMCMwIQYIKwYBBQUHAgEWFWh0dHBzOi8vd3d3LnNrLmVlL0NQUzAIBgYEAI96AQIwHwYDVR0RBBgwFoEUMzgwMDEwODU3MThAZWVzdGkuZWUwHQYDVR0OBBYEFPlp/ceABC52itoqppEmbf71TJz6MGEGCCsGAQUFBwEDBFUwUzBRBgYEAI5GAQUwRzBFFj9odHRwczovL3NrLmVlL2VuL3JlcG9zaXRvcnkvY29uZGl0aW9ucy1mb3ItdXNlLW9mLWNlcnRpZmljYXRlcy8TAkVOMCAGA1UdJQEB/wQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAfBgNVHSMEGDAWgBTAhJkpxE6fOwI09pnhClYACCk+ezBzBggrBgEFBQcBAQRnMGUwLAYIKwYBBQUHMAGGIGh0dHA6Ly9haWEuZGVtby5zay5lZS9lc3RlaWQyMDE4MDUGCCsGAQUFBzAChilodHRwOi8vYy5zay5lZS9UZXN0X29mX0VTVEVJRDIwMTguZGVyLmNydDAKBggqhkjOPQQDBAOBjAAwgYgCQgDCAgybz0u3W+tGI+AX+PiI5CrE9ptEHO5eezR1Jo4j7iGaO0i39xTGUB+NSC7P6AQbyE/ywqJjA1a62jTLcS9GHAJCARxN4NO4eVdWU3zVohCXm8WN3DWA7XUcn9TZiLGQ29P4xfQZOXJi/z4PNRRsR4plvSNB3dfyBvZn31HhC7my8woi\"," + - "\"appVersion\":\"https://web-eid.eu/web-eid-app/releases/2.5.0+0\"," + - "\"signature\":\"0Ov7ME6pTY1K2GXMj8Wxov/o2fGIMEds8OMY5dKdkB0nrqQX7fG1E5mnsbvyHpMDecMUH6Yg+p1HXdgB/lLqOcFZjt/OVXPjAAApC5d1YgRYATDcxsR1zqQwiNcHdmWn\"," + - "\"format\":\"web-eid:1.0\"}", - WebEidAuthToken.class); - } catch (JsonProcessingException e) { - throw new RuntimeException("Token parsing failed"); - } + VALID_AUTH_TOKEN = MAPPER.readValue( + "{\"algorithm\":\"ES384\"," + + "\"unverifiedCertificate\":\"MIIEBDCCA2WgAwIBAgIQY5OGshxoPMFg+Wfc0gFEaTAKBggqhkjOPQQDBDBgMQswCQYDVQQGEwJFRTEbMBkGA1UECgwSU0sgSUQgU29sdXRpb25zIEFTMRcwFQYDVQRhDA5OVFJFRS0xMDc0NzAxMzEbMBkGA1UEAwwSVEVTVCBvZiBFU1RFSUQyMDE4MB4XDTIxMDcyMjEyNDMwOFoXDTI2MDcwOTIxNTk1OVowfzELMAkGA1UEBhMCRUUxKjAoBgNVBAMMIUrDlUVPUkcsSkFBSy1LUklTVEpBTiwzODAwMTA4NTcxODEQMA4GA1UEBAwHSsOVRU9SRzEWMBQGA1UEKgwNSkFBSy1LUklTVEpBTjEaMBgGA1UEBRMRUE5PRUUtMzgwMDEwODU3MTgwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQmwEKsJTjaMHSaZj19hb9EJaJlwbKc5VFzmlGMFSJVk4dDy+eUxa5KOA7tWXqzcmhh5SYdv+MxcaQKlKWLMa36pfgv20FpEDb03GCtLqjLTRZ7649PugAQ5EmAqIic29CjggHDMIIBvzAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIDiDBHBgNVHSAEQDA+MDIGCysGAQQBg5EhAQIBMCMwIQYIKwYBBQUHAgEWFWh0dHBzOi8vd3d3LnNrLmVlL0NQUzAIBgYEAI96AQIwHwYDVR0RBBgwFoEUMzgwMDEwODU3MThAZWVzdGkuZWUwHQYDVR0OBBYEFPlp/ceABC52itoqppEmbf71TJz6MGEGCCsGAQUFBwEDBFUwUzBRBgYEAI5GAQUwRzBFFj9odHRwczovL3NrLmVlL2VuL3JlcG9zaXRvcnkvY29uZGl0aW9ucy1mb3ItdXNlLW9mLWNlcnRpZmljYXRlcy8TAkVOMCAGA1UdJQEB/wQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAfBgNVHSMEGDAWgBTAhJkpxE6fOwI09pnhClYACCk+ezBzBggrBgEFBQcBAQRnMGUwLAYIKwYBBQUHMAGGIGh0dHA6Ly9haWEuZGVtby5zay5lZS9lc3RlaWQyMDE4MDUGCCsGAQUFBzAChilodHRwOi8vYy5zay5lZS9UZXN0X29mX0VTVEVJRDIwMTguZGVyLmNydDAKBggqhkjOPQQDBAOBjAAwgYgCQgDCAgybz0u3W+tGI+AX+PiI5CrE9ptEHO5eezR1Jo4j7iGaO0i39xTGUB+NSC7P6AQbyE/ywqJjA1a62jTLcS9GHAJCARxN4NO4eVdWU3zVohCXm8WN3DWA7XUcn9TZiLGQ29P4xfQZOXJi/z4PNRRsR4plvSNB3dfyBvZn31HhC7my8woi\"," + + "\"appVersion\":\"https://web-eid.eu/web-eid-app/releases/2.5.0+0\"," + + "\"signature\":\"0Ov7ME6pTY1K2GXMj8Wxov/o2fGIMEds8OMY5dKdkB0nrqQX7fG1E5mnsbvyHpMDecMUH6Yg+p1HXdgB/lLqOcFZjt/OVXPjAAApC5d1YgRYATDcxsR1zqQwiNcHdmWn\"," + + "\"format\":\"web-eid:1.0\"}", + WebEidAuthToken.class); } public static final String VALID_CHALLENGE_NONCE = "12345678123456781234567812345678912356789123"; @@ -71,7 +66,7 @@ public static AuthTokenDTO mockAuthToken() { return authToken; } - public static String toJson(Object object) throws JsonProcessingException { + public static String toJson(Object object) { return MAPPER.writeValueAsString(object); } @@ -89,7 +84,7 @@ public static String mockSignatureInBase64(String digestToSign) { return signDigest(DatatypeConverter.parseBase64Binary(digestToSign)); } - public static T jsonStringToBean(String jsonString, Class valueType) throws JsonProcessingException { + public static T jsonStringToBean(String jsonString, Class valueType) { return MAPPER.readValue(jsonString, valueType); } diff --git a/pom.xml b/pom.xml index 2816da7c..31e373bd 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ 11 0.12.6 1.81 - 2.19.1 + 3.1.3 2.0.17 5.13.3 3.27.3 @@ -46,7 +46,7 @@ ${jjwt.version} - com.fasterxml.jackson.core + tools.jackson.core jackson-databind ${jackson.version} diff --git a/src/main/java/eu/webeid/security/validator/AuthTokenValidatorImpl.java b/src/main/java/eu/webeid/security/validator/AuthTokenValidatorImpl.java index 14cf3e78..bf360e8a 100644 --- a/src/main/java/eu/webeid/security/validator/AuthTokenValidatorImpl.java +++ b/src/main/java/eu/webeid/security/validator/AuthTokenValidatorImpl.java @@ -22,8 +22,9 @@ package eu.webeid.security.validator; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectReader; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectReader; import eu.webeid.security.authtoken.WebEidAuthToken; import eu.webeid.security.certificate.CertificateLoader; import eu.webeid.security.certificate.CertificateValidator; @@ -140,7 +141,7 @@ private WebEidAuthToken parseToken(String authToken) throws AuthTokenParseExcept throw new AuthTokenParseException("Web eID authentication token is null"); } return token; - } catch (IOException e) { + } catch (JacksonException e) { throw new AuthTokenParseException("Error parsing Web eID authentication token", e); } } diff --git a/src/test/java/eu/webeid/security/testutil/DateMocker.java b/src/test/java/eu/webeid/security/testutil/DateMocker.java index ec49a049..f0be8c84 100644 --- a/src/test/java/eu/webeid/security/testutil/DateMocker.java +++ b/src/test/java/eu/webeid/security/testutil/DateMocker.java @@ -22,7 +22,7 @@ package eu.webeid.security.testutil; -import com.fasterxml.jackson.databind.util.StdDateFormat; +import tools.jackson.databind.util.StdDateFormat; import eu.webeid.security.util.DateAndTime; import io.jsonwebtoken.Clock; import org.mockito.MockedStatic; diff --git a/src/test/java/eu/webeid/security/validator/AuthTokenCertificateTest.java b/src/test/java/eu/webeid/security/validator/AuthTokenCertificateTest.java index 14ed0666..50779cd4 100644 --- a/src/test/java/eu/webeid/security/validator/AuthTokenCertificateTest.java +++ b/src/test/java/eu/webeid/security/validator/AuthTokenCertificateTest.java @@ -22,7 +22,7 @@ package eu.webeid.security.validator; -import com.fasterxml.jackson.databind.exc.MismatchedInputException; +import tools.jackson.databind.exc.MismatchedInputException; import eu.webeid.security.authtoken.WebEidAuthToken; import eu.webeid.security.exceptions.AuthTokenException; import eu.webeid.security.exceptions.AuthTokenParseException; diff --git a/src/test/java/eu/webeid/security/validator/AuthTokenSignatureValidatorTest.java b/src/test/java/eu/webeid/security/validator/AuthTokenSignatureValidatorTest.java index fc7edd0c..b4b84195 100644 --- a/src/test/java/eu/webeid/security/validator/AuthTokenSignatureValidatorTest.java +++ b/src/test/java/eu/webeid/security/validator/AuthTokenSignatureValidatorTest.java @@ -22,8 +22,8 @@ package eu.webeid.security.validator; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectReader; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectReader; import eu.webeid.security.certificate.CertificateLoader; import org.junit.jupiter.api.Test; import eu.webeid.security.authtoken.WebEidAuthToken;