diff options
| author | Thomas <> | 2023-08-31 20:37:42 +0200 | 
|---|---|---|
| committer | Thomas <> | 2023-08-31 20:37:42 +0200 | 
| commit | e915685e22c7c084f7fd0c4870ff20d3f0194a91 (patch) | |
| tree | 638deef490a63799ff48ca826ff8702b2efbee2a /eaaf_modules | |
| parent | 5acc09000c59c93510567e88cb701919122dc5b2 (diff) | |
| download | EAAF-Components-e915685e22c7c084f7fd0c4870ff20d3f0194a91.tar.gz EAAF-Components-e915685e22c7c084f7fd0c4870ff20d3f0194a91.tar.bz2 EAAF-Components-e915685e22c7c084f7fd0c4870ff20d3f0194a91.zip | |
feat(core): refactor to openSAML 5 for Java 17
Diffstat (limited to 'eaaf_modules')
70 files changed, 383 insertions, 272 deletions
| diff --git a/eaaf_modules/eaaf_module_auth_sl20/checks/spotbugs-exclude.xml b/eaaf_modules/eaaf_module_auth_sl20/checks/spotbugs-exclude.xml new file mode 100644 index 00000000..c3a419a2 --- /dev/null +++ b/eaaf_modules/eaaf_module_auth_sl20/checks/spotbugs-exclude.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<FindBugsFilter> +    <Match> +	  <OR> +        <Class name="at.gv.egiz.eaaf.modules.auth.sl20.data.VerificationResult" /> +        <Class name="at.gv.egiz.eaaf.modules.auth.sl20.utils.SL20HttpBindingUtils" /> +        <Class name="at.gv.egiz.eaaf.modules.auth.sl20.utils.SL20HttpBindingUtils$Sl20ResponseHolder" /> +      </OR>       +      <OR> +    	<Bug pattern="EI_EXPOSE_REP" /> +    	<Bug pattern="EI_EXPOSE_REP2" /> +      </OR> +    </Match> +    <Match> +	  <OR> +        <Class name="at.gv.egiz.eaaf.modules.auth.sl20.utils.JsonMapper" /> +      </OR>       +      <OR> +    	<Bug pattern="MS_EXPOSE_REP" /> +      </OR> +    </Match>           +</FindBugsFilter> diff --git a/eaaf_modules/eaaf_module_auth_sl20/pom.xml b/eaaf_modules/eaaf_module_auth_sl20/pom.xml index 556f3aea..8ec445bc 100644 --- a/eaaf_modules/eaaf_module_auth_sl20/pom.xml +++ b/eaaf_modules/eaaf_module_auth_sl20/pom.xml @@ -106,6 +106,15 @@            </filesets>          </configuration>        </plugin> +      <plugin> +        <groupId>com.github.spotbugs</groupId> +        <artifactId>spotbugs-maven-plugin</artifactId> +        <version>${spotbugs-maven-plugin.version}</version> +        <configuration> +          <failOnError>true</failOnError> +          <excludeFilterFile>checks/spotbugs-exclude.xml</excludeFilterFile> +        </configuration> +      </plugin>                    </plugins>    </build> diff --git a/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/AbstractSL20AuthenticationModulImpl.java b/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/AbstractSL20AuthenticationModulImpl.java index d561a0bc..d7d2c90b 100644 --- a/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/AbstractSL20AuthenticationModulImpl.java +++ b/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/AbstractSL20AuthenticationModulImpl.java @@ -3,8 +3,6 @@ package at.gv.egiz.eaaf.modules.auth.sl20;  import java.util.Arrays;  import java.util.List; -import javax.annotation.PostConstruct; -  import org.apache.commons.lang3.StringUtils;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory; @@ -17,6 +15,7 @@ import at.gv.egiz.eaaf.core.api.idp.auth.modules.AuthModule;  import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;  import at.gv.egiz.eaaf.core.impl.idp.auth.AbstractAuthenticationManager;  import at.gv.egiz.eaaf.modules.auth.sl20.utils.SL20Constants; +import jakarta.annotation.PostConstruct;  /**   * AuthModule to select a Securtiy-Layer 2.0 based authentication process. diff --git a/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/tasks/AbstractCreateQualEidRequestTask.java b/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/tasks/AbstractCreateQualEidRequestTask.java index 9dcfbe75..7e895d89 100644 --- a/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/tasks/AbstractCreateQualEidRequestTask.java +++ b/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/tasks/AbstractCreateQualEidRequestTask.java @@ -11,16 +11,13 @@ import java.util.Locale;  import java.util.Map;  import java.util.concurrent.TimeUnit; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -  import org.apache.commons.lang3.StringUtils;  import org.apache.commons.lang3.time.StopWatch; -import org.apache.http.NameValuePair; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.client.utils.URIBuilder; -import org.apache.http.message.BasicNameValuePair; +import org.apache.hc.client5.http.classic.methods.HttpPost; +import org.apache.hc.client5.http.entity.UrlEncodedFormEntity; +import org.apache.hc.core5.http.NameValuePair; +import org.apache.hc.core5.http.message.BasicNameValuePair; +import org.apache.hc.core5.net.URIBuilder;  import org.jose4j.base64url.Base64Url;  import org.springframework.beans.factory.annotation.Autowired;  import org.springframework.context.i18n.LocaleContextHolder; @@ -48,6 +45,8 @@ import at.gv.egiz.eaaf.modules.auth.sl20.utils.SL20HttpBindingUtils;  import at.gv.egiz.eaaf.modules.auth.sl20.utils.SL20HttpBindingUtils.Sl20ResponseHolder;  import at.gv.egiz.eaaf.modules.auth.sl20.utils.SL20JsonBuilderUtils;  import at.gv.egiz.eaaf.modules.auth.sl20.utils.SL20JsonExtractorUtils; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse;  import lombok.extern.slf4j.Slf4j;  @Slf4j diff --git a/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/tasks/AbstractReceiveQualEidTask.java b/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/tasks/AbstractReceiveQualEidTask.java index 79d9f8d6..dd3e9ea7 100644 --- a/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/tasks/AbstractReceiveQualEidTask.java +++ b/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/tasks/AbstractReceiveQualEidTask.java @@ -3,10 +3,7 @@ package at.gv.egiz.eaaf.modules.auth.sl20.tasks;  import java.io.IOException;  import java.util.Map; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.commons.fileupload.FileUploadException; +import org.apache.commons.fileupload2.core.FileUploadException;  import org.apache.commons.lang3.StringUtils;  import org.jose4j.base64url.Base64Url;  import org.springframework.beans.factory.annotation.Autowired; @@ -36,6 +33,8 @@ import at.gv.egiz.eaaf.modules.auth.sl20.utils.JsonMapper;  import at.gv.egiz.eaaf.modules.auth.sl20.utils.SL20Constants;  import at.gv.egiz.eaaf.modules.auth.sl20.utils.SL20JsonExtractorUtils;  import at.gv.egiz.eaaf.modules.auth.sl20.utils.SL20ResponseUtils; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse;  import lombok.extern.slf4j.Slf4j;  @Slf4j diff --git a/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/utils/JsonSecurityUtils.java b/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/utils/JsonSecurityUtils.java index 668ce09a..5e7f926f 100644 --- a/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/utils/JsonSecurityUtils.java +++ b/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/utils/JsonSecurityUtils.java @@ -7,11 +7,11 @@ import java.security.KeyStoreException;  import java.security.Provider;  import java.security.cert.CertificateEncodingException;  import java.security.cert.X509Certificate; +import java.util.Base64;  import java.util.Collections;  import java.util.List;  import javax.annotation.Nonnull; -import javax.annotation.PostConstruct;  import org.apache.commons.lang3.StringUtils;  import org.bouncycastle.jce.provider.BouncyCastleProvider; @@ -26,7 +26,6 @@ import org.jose4j.lang.JoseException;  import org.springframework.beans.factory.annotation.Autowired;  import org.springframework.lang.NonNull;  import org.springframework.stereotype.Service; -import org.springframework.util.Base64Utils;  import com.fasterxml.jackson.core.JsonParseException;  import com.fasterxml.jackson.databind.JsonNode; @@ -49,6 +48,7 @@ import at.gv.egiz.eaaf.modules.auth.sl20.exceptions.SL20Exception;  import at.gv.egiz.eaaf.modules.auth.sl20.exceptions.SL20SecurityException;  import at.gv.egiz.eaaf.modules.auth.sl20.exceptions.SlCommandoBuildException;  import at.gv.egiz.eaaf.modules.auth.sl20.exceptions.SlCommandoParserException; +import jakarta.annotation.PostConstruct;  import lombok.extern.slf4j.Slf4j;  @Service @@ -243,10 +243,9 @@ public class JsonSecurityUtils implements IJoseTools {          if (!sortedX5cCerts.get(0).equals(encryptionCred.getSecond()[0])) {            log.info("Certificate from JOSE header does NOT match encryption certificate"); -            try { - -            log.debug("JOSE certificate: {}", Base64Utils.encode(sortedX5cCerts.get(0).getEncoded())); +            log.debug("JOSE certificate: {}", Base64.getEncoder().encodeToString( +                sortedX5cCerts.get(0).getEncoded()));            } catch (final CertificateEncodingException e) {              e.printStackTrace();            } diff --git a/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/utils/SL20Constants.java b/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/utils/SL20Constants.java index e75410f7..b98b2980 100644 --- a/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/utils/SL20Constants.java +++ b/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/utils/SL20Constants.java @@ -48,9 +48,9 @@ public class SL20Constants {       */      public static VdaAuthMethod fromString(@Nonnull final String s) {        try { -        return VdaAuthMethod.valueOf(s.toUpperCase()); +        return s != null ? VdaAuthMethod.valueOf(s.toUpperCase()) : VdaAuthMethod.ANY; -      } catch (IllegalArgumentException | NullPointerException e) { +      } catch (IllegalArgumentException e) {          return VdaAuthMethod.ANY;        } diff --git a/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/utils/SL20HttpBindingUtils.java b/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/utils/SL20HttpBindingUtils.java index c45245b1..f9ca7cf8 100644 --- a/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/utils/SL20HttpBindingUtils.java +++ b/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/utils/SL20HttpBindingUtils.java @@ -7,26 +7,26 @@ import java.text.MessageFormat;  import javax.annotation.Nonnull;  import javax.annotation.Nullable; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.http.Header; -import org.apache.http.HttpEntity; -import org.apache.http.ParseException; -import org.apache.http.StatusLine; -import org.apache.http.client.ResponseHandler; -import org.apache.http.client.utils.URIBuilder; -import org.apache.http.entity.ContentType; -import org.apache.http.util.EntityUtils; + +import org.apache.hc.core5.http.ContentType; +import org.apache.hc.core5.http.Header; +import org.apache.hc.core5.http.HttpEntity; +import org.apache.hc.core5.http.io.HttpClientResponseHandler; +import org.apache.hc.core5.http.io.entity.EntityUtils; +import org.apache.hc.core5.http.message.StatusLine; +import org.apache.hc.core5.net.URIBuilder;  import org.jose4j.base64url.Base64Url;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory;  import org.springframework.http.HttpStatus;  import org.springframework.http.MediaType; +import com.fasterxml.jackson.core.JacksonException;  import com.fasterxml.jackson.databind.JsonNode;  import at.gv.egiz.eaaf.modules.auth.sl20.exceptions.SlCommandoParserException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse;  import lombok.Data;  import lombok.Getter; @@ -48,20 +48,20 @@ public class SL20HttpBindingUtils {     *      * @return {@link Sl20ResponseHolder}     */ -  public static ResponseHandler<Sl20ResponseHolder> sl20ResponseHandler() { +  public static HttpClientResponseHandler<Sl20ResponseHolder> sl20ResponseHandler() {      return response -> {        try { -        final int httpStatusCode = response.getStatusLine().getStatusCode(); +        final int httpStatusCode = response.getCode();          if (httpStatusCode == HttpStatus.OK.value()) {            if (response.getEntity().getContentType() == null) {              throw new SlCommandoParserException("SL20 response contains NO ContentType");            } -          final ContentType contentType = ContentType.getOrDefault(response.getEntity());           +          final ContentType contentType = ContentType.parse(response.getEntity().getContentType());            if (!ContentType.APPLICATION_JSON.getMimeType().equals(contentType.getMimeType())) {              log.error("SL20 response with statuscode: {} has wrong http ContentType: {}",  -                response.getStatusLine(), contentType); +                response.getCode(), contentType);              throw new SlCommandoParserException(                  "SL20 response with a wrong http ContentType: " + contentType); @@ -69,7 +69,7 @@ public class SL20HttpBindingUtils {            //parse OK response from body            return new Sl20ResponseHolder(parseSL20ResultFromResponse(response.getEntity()), -              response.getStatusLine());                     +              new StatusLine(response));          } else if (httpStatusCode == HttpStatus.SEE_OTHER.value()               || httpStatusCode == HttpStatus.TEMPORARY_REDIRECT.value()) { @@ -81,24 +81,24 @@ public class SL20HttpBindingUtils {            final String sl20RespString = new URIBuilder(locationHeader[0].getValue()).getQueryParams().get(0).getValue();            return new Sl20ResponseHolder(JsonMapper.getMapper().readTree(Base64Url.decode(sl20RespString)),  -              response.getStatusLine());  +              new StatusLine(response));          } else if (              httpStatusCode == HttpStatus.INTERNAL_SERVER_ERROR.value()               || httpStatusCode == HttpStatus.UNAUTHORIZED.value()              || httpStatusCode == HttpStatus.BAD_REQUEST.value()) {            log.info("SL20 response with http-code: {}. Search for error message", httpStatusCode);                     -           +            String bodyMsg = "_EMPTY_";            try {              //extract JSON body from defined http error-codes              bodyMsg = EntityUtils.toString(response.getEntity());                          log.info("SL20 response with http-code: {} and errorMsg: {}", httpStatusCode, bodyMsg);              Sl20ResponseHolder holder = new Sl20ResponseHolder( -                JsonMapper.getMapper().readTree(bodyMsg), response.getStatusLine()); +                JsonMapper.getMapper().readTree(bodyMsg), new StatusLine(response));              return holder;  -          } catch (final IOException | ParseException e) { +          } catch (final JacksonException e) {              log.warn("SL20 response contains no valid JSON. Body msg: {}", bodyMsg, e);                          throw new SlCommandoParserException(MessageFormat.format(                  "SL20 response with http-code: {} and generic response-processing error: {}",  @@ -115,12 +115,12 @@ public class SL20HttpBindingUtils {          }        } catch (SlCommandoParserException e) { -        Sl20ResponseHolder holder = new Sl20ResponseHolder(null, response.getStatusLine()); +        Sl20ResponseHolder holder = new Sl20ResponseHolder(null, new StatusLine(response));          holder.setError(e);          return holder;        } catch (final Exception e) {         -        Sl20ResponseHolder holder = new Sl20ResponseHolder(null, response.getStatusLine()); +        Sl20ResponseHolder holder = new Sl20ResponseHolder(null, new StatusLine(response));          holder.setError(              new SlCommandoParserException("SL20 response parsing FAILED! Reason: " + e.getMessage(), e));          return holder; diff --git a/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/utils/SL20ResponseUtils.java b/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/utils/SL20ResponseUtils.java index c3826087..af292964 100644 --- a/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/utils/SL20ResponseUtils.java +++ b/eaaf_modules/eaaf_module_auth_sl20/src/main/java/at/gv/egiz/eaaf/modules/auth/sl20/utils/SL20ResponseUtils.java @@ -8,12 +8,9 @@ import java.util.HashMap;  import java.util.Map;  import java.util.UUID; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -  import org.apache.commons.lang3.StringUtils; -import org.apache.http.client.utils.URIBuilder; -import org.apache.http.entity.ContentType; +import org.apache.hc.core5.http.ContentType; +import org.apache.hc.core5.net.URIBuilder;  import com.fasterxml.jackson.databind.node.ObjectNode; @@ -22,6 +19,8 @@ import at.gv.egiz.eaaf.core.api.data.EaafConstants;  import at.gv.egiz.eaaf.core.api.idp.IConfiguration;  import at.gv.egiz.eaaf.modules.auth.sl20.Constants;  import at.gv.egiz.eaaf.modules.auth.sl20.exceptions.SL20Exception; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse;  import lombok.extern.slf4j.Slf4j;  @Slf4j diff --git a/eaaf_modules/eaaf_module_moa-sig/checks/spotbugs-exclude.xml b/eaaf_modules/eaaf_module_moa-sig/checks/spotbugs-exclude.xml new file mode 100644 index 00000000..30b9c014 --- /dev/null +++ b/eaaf_modules/eaaf_module_moa-sig/checks/spotbugs-exclude.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<FindBugsFilter> +    <Match> +	  <OR> +        <Class name="at.gv.egiz.eaaf.modules.sigverify.moasig.impl.data.GenericSignatureVerificationResponse" /> +        <Class name="at.gv.egiz.eaaf.modules.sigverify.moasig.impl.data.VerifyPdfSignatureResponse" /> +        <Class name="at.gv.egiz.eaaf.modules.sigverify.moasig.impl.parser.VerifyXmlSignatureResponseParser" /> +      </OR>       +      <OR> +    	<Bug pattern="EI_EXPOSE_REP" /> +    	<Bug pattern="EI_EXPOSE_REP2" /> +      </OR> +    </Match>     +</FindBugsFilter> diff --git a/eaaf_modules/eaaf_module_moa-sig/pom.xml b/eaaf_modules/eaaf_module_moa-sig/pom.xml index 613e841d..c8a30654 100644 --- a/eaaf_modules/eaaf_module_moa-sig/pom.xml +++ b/eaaf_modules/eaaf_module_moa-sig/pom.xml @@ -221,7 +221,15 @@            </filesets>          </configuration>        </plugin> -       +      <plugin> +        <groupId>com.github.spotbugs</groupId> +        <artifactId>spotbugs-maven-plugin</artifactId> +        <version>${spotbugs-maven-plugin.version}</version> +        <configuration> +          <failOnError>true</failOnError> +          <excludeFilterFile>checks/spotbugs-exclude.xml</excludeFilterFile> +        </configuration> +      </plugin>          	</plugins>    </build>  </project> diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/MoaSigInitializer.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/MoaSigInitializer.java index 006f48c2..f4c68230 100644 --- a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/MoaSigInitializer.java +++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/MoaSigInitializer.java @@ -7,8 +7,6 @@ import java.security.Security;  import java.util.Iterator;  import java.util.Map.Entry; -import javax.annotation.PostConstruct; -  import org.springframework.beans.factory.annotation.Autowired;  import at.gv.egiz.eaaf.modules.sigverify.moasig.api.data.ISchemaRessourceProvider; @@ -21,6 +19,7 @@ import at.gv.egovernment.moaspss.util.DOMUtils;  import iaik.asn1.structures.AlgorithmID;  import iaik.security.ec.provider.ECCelerate;  import iaik.security.provider.IAIK; +import jakarta.annotation.PostConstruct;  import lombok.Getter;  import lombok.extern.slf4j.Slf4j; diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/SignatureCreationService.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/SignatureCreationService.java index 0d8b7975..b0ff765c 100644 --- a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/SignatureCreationService.java +++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/SignatureCreationService.java @@ -1,6 +1,5 @@  package at.gv.egiz.eaaf.modules.sigverify.moasig.impl; -import javax.annotation.PostConstruct;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory; @@ -9,6 +8,7 @@ import org.springframework.stereotype.Service;  import at.gv.egiz.eaaf.modules.sigverify.moasig.api.ISignatureCreationService;  import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureCreationInvoker;  import at.gv.egovernment.moa.spss.server.invoke.XMLSignatureCreationInvoker; +import jakarta.annotation.PostConstruct;  @Service(value = "moaSigCreateService")  public class SignatureCreationService extends AbstractSignatureService diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/SignatureVerificationService.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/SignatureVerificationService.java index 1f8bf3b8..9904b1ea 100644 --- a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/SignatureVerificationService.java +++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/SignatureVerificationService.java @@ -3,20 +3,18 @@ package at.gv.egiz.eaaf.modules.sigverify.moasig.impl;  import java.io.ByteArrayInputStream;  import java.security.cert.CertificateEncodingException;  import java.util.ArrayList; +import java.util.Base64;  import java.util.Collections;  import java.util.Date;  import java.util.Iterator;  import java.util.List;  import java.util.Map; -import javax.annotation.PostConstruct; -  import org.apache.commons.lang3.time.DateFormatUtils;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory;  import org.springframework.lang.Nullable;  import org.springframework.stereotype.Service; -import org.springframework.util.Base64Utils;  import org.w3c.dom.Document;  import org.w3c.dom.Element;  import org.w3c.dom.Node; @@ -44,6 +42,7 @@ import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse;  import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureVerificationInvoker;  import at.gv.egovernment.moa.spss.server.invoke.XMLSignatureVerificationInvoker;  import at.gv.egovernment.moaspss.util.Constants; +import jakarta.annotation.PostConstruct;  /**   * MOA-Sig based signature verification implementation. @@ -425,7 +424,7 @@ public class SignatureVerificationService extends AbstractSignatureService        verifySignatureEnvironmentElem.appendChild(base64ContentElem);        // insert the base64 encoded signature -      String base64EncodedAssertion = Base64Utils.encodeToString(signature); +      String base64EncodedAssertion = Base64.getEncoder().encodeToString(signature);        // replace all '\r' characters by no char.        final StringBuffer replaced = new StringBuffer();        for (int i = 0; i < base64EncodedAssertion.length(); i++) { @@ -485,7 +484,7 @@ public class SignatureVerificationService extends AbstractSignatureService            final Element content = requestDoc_.createElementNS(MOA_NS_URI, "Content");            content.setAttribute("Reference", reference);            final Element b64content = requestDoc_.createElementNS(MOA_NS_URI, "Base64Content"); -          b64content.setTextContent(Base64Utils.encodeToString(contentBytes)); +          b64content.setTextContent(Base64.getEncoder().encodeToString(signature));            content.appendChild(b64content);            supplementProfile.appendChild(content);          } diff --git a/eaaf_modules/eaaf_module_pvp2_core/checks/spotbugs-exclude.xml b/eaaf_modules/eaaf_module_pvp2_core/checks/spotbugs-exclude.xml index b1d216dc..3aa95b86 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/checks/spotbugs-exclude.xml +++ b/eaaf_modules/eaaf_module_pvp2_core/checks/spotbugs-exclude.xml @@ -12,4 +12,17 @@        <Method name="doDecode" />        <Bug pattern="CRLF_INJECTION_LOGS" />      </Match> +    <Match> +	  <OR> +        <Class name="at.gv.egiz.eaaf.modules.pvp2.impl.message.InboundMessage" /> +        <Class name="at.gv.egiz.eaaf.modules.pvp2.impl.reqattr.EaafRequestedAttributeImpl" /> +        <Class name="at.gv.egiz.eaaf.modules.pvp2.impl.utils.AbstractCredentialProvider" /> +        <Class name="at.gv.egiz.eaaf.modules.pvp2.impl.validation.metadata.SimpleMetadataSignatureVerificationFilter" /> +        <Class name="at.gv.egiz.eaaf.modules.pvp2.impl.verification.PvpSamlMessageHandlerChain" /> +      </OR>       +      <OR> +    	<Bug pattern="EI_EXPOSE_REP" /> +    	<Bug pattern="EI_EXPOSE_REP2" /> +      </OR> +    </Match>  </FindBugsFilter> diff --git a/eaaf_modules/eaaf_module_pvp2_core/pom.xml b/eaaf_modules/eaaf_module_pvp2_core/pom.xml index 88523925..0afca29a 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/pom.xml +++ b/eaaf_modules/eaaf_module_pvp2_core/pom.xml @@ -23,10 +23,6 @@      </dependency>      <dependency>        <groupId>org.opensaml</groupId> -      <artifactId>opensaml-core</artifactId> -    </dependency> -    <dependency> -      <groupId>org.opensaml</groupId>        <artifactId>opensaml-saml-impl</artifactId>        <exclusions>          <exclusion> @@ -170,7 +166,7 @@    </build>    <repositories> -	 <repository> +	<repository>         <id>shibboleth-release</id>         <url>https://build.shibboleth.net/maven/releases/</url>         <releases> @@ -179,7 +175,17 @@         <snapshots>           <enabled>false</enabled>         </snapshots> -     </repository>        +    </repository> +	<repository> +       <id>shibboleth-snapshot</id> +       <url>https://build.shibboleth.net/maven/snapshots/</url> +       <releases> +         <enabled>false</enabled> +       </releases> +       <snapshots> +         <enabled>true</enabled> +       </snapshots> +     </repository>                    </repositories>  </project> diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/api/binding/IDecoder.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/api/binding/IDecoder.java index 83bfee84..b2219919 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/api/binding/IDecoder.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/api/binding/IDecoder.java @@ -19,15 +19,15 @@  package at.gv.egiz.eaaf.modules.pvp2.api.binding; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse;  import javax.xml.namespace.QName;  import at.gv.egiz.eaaf.modules.pvp2.api.message.InboundMessageInterface;  import at.gv.egiz.eaaf.modules.pvp2.api.metadata.IPvp2MetadataProvider;  import at.gv.egiz.eaaf.modules.pvp2.exception.Pvp2Exception; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import net.shibboleth.shared.net.URIComparator; -import net.shibboleth.utilities.java.support.net.URIComparator;  public interface IDecoder {    InboundMessageInterface decode(HttpServletRequest req, HttpServletResponse resp, diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/api/binding/IEncoder.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/api/binding/IEncoder.java index 5a8bc4fb..82ed4184 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/api/binding/IEncoder.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/api/binding/IEncoder.java @@ -19,17 +19,17 @@  package at.gv.egiz.eaaf.modules.pvp2.api.binding; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import at.gv.egiz.eaaf.core.api.IRequest; -import at.gv.egiz.eaaf.modules.pvp2.api.credential.EaafX509Credential; -import at.gv.egiz.eaaf.modules.pvp2.exception.Pvp2Exception;  import org.opensaml.saml.saml2.core.RequestAbstractType;  import org.opensaml.saml.saml2.core.StatusResponseType;  import org.opensaml.security.SecurityException; +import at.gv.egiz.eaaf.core.api.IRequest; +import at.gv.egiz.eaaf.modules.pvp2.api.credential.EaafX509Credential; +import at.gv.egiz.eaaf.modules.pvp2.exception.Pvp2Exception; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +  public interface IEncoder {    /** diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/api/metadata/IPvp2MetadataProvider.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/api/metadata/IPvp2MetadataProvider.java index ca3aa844..daeb452b 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/api/metadata/IPvp2MetadataProvider.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/api/metadata/IPvp2MetadataProvider.java @@ -25,7 +25,8 @@ import javax.annotation.Nullable;  import org.opensaml.saml.metadata.resolver.RefreshableMetadataResolver;  import org.opensaml.saml.saml2.metadata.EntityDescriptor; -import net.shibboleth.utilities.java.support.resolver.ResolverException; +import net.shibboleth.shared.resolver.ResolverException; +  public interface IPvp2MetadataProvider extends RefreshableMetadataResolver { diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/api/validation/IAuthnRequestPostProcessor.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/api/validation/IAuthnRequestPostProcessor.java index 9f7a5980..cf61fdf5 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/api/validation/IAuthnRequestPostProcessor.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/api/validation/IAuthnRequestPostProcessor.java @@ -19,13 +19,12 @@  package at.gv.egiz.eaaf.modules.pvp2.api.validation; -import javax.servlet.http.HttpServletRequest; +import org.opensaml.saml.saml2.core.AuthnRequest; +import org.opensaml.saml.saml2.metadata.SPSSODescriptor;  import at.gv.egiz.eaaf.core.api.IRequest;  import at.gv.egiz.eaaf.core.exceptions.AuthnRequestValidatorException; - -import org.opensaml.saml.saml2.core.AuthnRequest; -import org.opensaml.saml.saml2.metadata.SPSSODescriptor; +import jakarta.servlet.http.HttpServletRequest;  /**   * SAML2 Authn. request post-processor. diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/binding/AbstractBinding.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/binding/AbstractBinding.java index 459c3fc3..ff3c9d95 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/binding/AbstractBinding.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/binding/AbstractBinding.java @@ -48,7 +48,7 @@ import at.gv.egiz.eaaf.modules.pvp2.impl.utils.Saml2Utils;  import at.gv.egiz.eaaf.modules.pvp2.impl.validation.TrustEngineFactory;  import at.gv.egiz.eaaf.modules.pvp2.impl.verification.PvpSamlMessageHandlerChain;  import lombok.extern.slf4j.Slf4j; -import net.shibboleth.utilities.java.support.component.ComponentInitializationException; +import net.shibboleth.shared.component.ComponentInitializationException;  /**   * Abstract Binding implements common code for SAML2 binding implementations. diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/binding/PostBinding.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/binding/PostBinding.java index 1faaf441..047c0492 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/binding/PostBinding.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/binding/PostBinding.java @@ -19,8 +19,7 @@  package at.gv.egiz.eaaf.modules.pvp2.impl.binding; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +  import javax.xml.namespace.QName;  import org.opensaml.messaging.context.MessageContext; @@ -52,9 +51,12 @@ import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.EaafHttpPostDecoder;  import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.HttpPostEncoderWithOwnTemplate;  import at.gv.egiz.eaaf.modules.pvp2.impl.verification.EaafSamlProtocolMessageXmlSignatureSecurityHandler;  import at.gv.egiz.eaaf.modules.pvp2.impl.verification.PvpSamlMessageHandlerChain; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse;  import lombok.extern.slf4j.Slf4j; -import net.shibboleth.utilities.java.support.net.URIComparator; -import net.shibboleth.utilities.java.support.primitive.NonnullSupplier; +import net.shibboleth.shared.net.URIComparator; +import net.shibboleth.shared.primitive.NonnullSupplier; +  @Slf4j  public class PostBinding extends AbstractBinding implements IDecoder, IEncoder { diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/binding/RedirectBinding.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/binding/RedirectBinding.java index d3ab3f6b..db6b5285 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/binding/RedirectBinding.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/binding/RedirectBinding.java @@ -19,8 +19,6 @@  package at.gv.egiz.eaaf.modules.pvp2.impl.binding; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse;  import javax.xml.namespace.QName;  import org.opensaml.messaging.context.MessageContext; @@ -48,8 +46,10 @@ import at.gv.egiz.eaaf.modules.pvp2.exception.SamlBindingException;  import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.EaafHttpRedirectDeflateDecoder;  import at.gv.egiz.eaaf.modules.pvp2.impl.verification.EaafSaml2HttpRedirectDeflateSignatureSecurityHandler;  import at.gv.egiz.eaaf.modules.pvp2.impl.verification.PvpSamlMessageHandlerChain; -import net.shibboleth.utilities.java.support.net.URIComparator; -import net.shibboleth.utilities.java.support.primitive.NonnullSupplier; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import net.shibboleth.shared.net.URIComparator; +import net.shibboleth.shared.primitive.NonnullSupplier;  public class RedirectBinding extends AbstractBinding implements IDecoder, IEncoder { diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/binding/SoapBinding.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/binding/SoapBinding.java index 6c8a1682..f5a47645 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/binding/SoapBinding.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/binding/SoapBinding.java @@ -19,8 +19,6 @@  package at.gv.egiz.eaaf.modules.pvp2.impl.binding; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse;  import javax.xml.namespace.QName;  import org.opensaml.messaging.context.MessageContext; @@ -52,9 +50,11 @@ import at.gv.egiz.eaaf.modules.pvp2.impl.utils.Saml2Utils;  import at.gv.egiz.eaaf.modules.pvp2.impl.verification.EaafMessageContextInitializationHandler;  import at.gv.egiz.eaaf.modules.pvp2.impl.verification.EaafSamlProtocolMessageXmlSignatureSecurityHandler;  import at.gv.egiz.eaaf.modules.pvp2.impl.verification.PvpSamlMessageHandlerChain; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse;  import lombok.extern.slf4j.Slf4j; -import net.shibboleth.utilities.java.support.component.ComponentInitializationException; -import net.shibboleth.utilities.java.support.net.URIComparator; +import net.shibboleth.shared.component.ComponentInitializationException; +import net.shibboleth.shared.net.URIComparator;  @Slf4j  public class SoapBinding extends AbstractBinding implements IDecoder, IEncoder { diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/builder/PvpMetadataBuilder.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/builder/PvpMetadataBuilder.java index da3db0a8..7747ad4a 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/builder/PvpMetadataBuilder.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/builder/PvpMetadataBuilder.java @@ -67,7 +67,7 @@ import at.gv.egiz.eaaf.modules.pvp2.api.credential.EaafX509Credential;  import at.gv.egiz.eaaf.modules.pvp2.api.metadata.IPvpMetadataBuilderConfiguration;  import at.gv.egiz.eaaf.modules.pvp2.exception.CredentialsNotAvailableException;  import at.gv.egiz.eaaf.modules.pvp2.impl.utils.Saml2Utils; -import net.shibboleth.utilities.java.support.xml.SerializeSupport; +import net.shibboleth.shared.xml.SerializeSupport;  /**   * PVP metadata builder implementation. diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/builder/reqattr/EaafRequestedAttributeMarshaller.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/builder/reqattr/EaafRequestedAttributeMarshaller.java index 4acee141..1e7c12fc 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/builder/reqattr/EaafRequestedAttributeMarshaller.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/builder/reqattr/EaafRequestedAttributeMarshaller.java @@ -23,8 +23,6 @@ import java.util.Map.Entry;  import javax.xml.namespace.QName; -import at.gv.egiz.eaaf.modules.pvp2.api.reqattr.EaafRequestedAttribute; -  import org.opensaml.core.xml.XMLObject;  import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;  import org.opensaml.core.xml.io.MarshallingException; @@ -32,7 +30,9 @@ import org.opensaml.saml.common.AbstractSAMLObjectMarshaller;  import org.w3c.dom.Attr;  import org.w3c.dom.Element; -import net.shibboleth.utilities.java.support.xml.AttributeSupport; +import at.gv.egiz.eaaf.modules.pvp2.api.reqattr.EaafRequestedAttribute; +import net.shibboleth.shared.xml.AttributeSupport; +  public class EaafRequestedAttributeMarshaller extends AbstractSAMLObjectMarshaller {    @Override diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/builder/reqattr/EaafRequestedAttributeUnmarshaller.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/builder/reqattr/EaafRequestedAttributeUnmarshaller.java index 5313f340..51e02d08 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/builder/reqattr/EaafRequestedAttributeUnmarshaller.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/builder/reqattr/EaafRequestedAttributeUnmarshaller.java @@ -21,15 +21,15 @@ package at.gv.egiz.eaaf.modules.pvp2.impl.builder.reqattr;  import javax.xml.namespace.QName; -import at.gv.egiz.eaaf.modules.pvp2.PvpConstants; -import at.gv.egiz.eaaf.modules.pvp2.api.reqattr.EaafRequestedAttribute; -  import org.opensaml.core.xml.XMLObject;  import org.opensaml.core.xml.io.UnmarshallingException;  import org.opensaml.saml.common.AbstractSAMLObjectUnmarshaller;  import org.w3c.dom.Attr; -import net.shibboleth.utilities.java.support.xml.QNameSupport; +import at.gv.egiz.eaaf.modules.pvp2.PvpConstants; +import at.gv.egiz.eaaf.modules.pvp2.api.reqattr.EaafRequestedAttribute; +import net.shibboleth.shared.xml.QNameSupport; +  public class EaafRequestedAttributeUnmarshaller extends AbstractSAMLObjectUnmarshaller {    @Override diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/message/InboundMessage.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/message/InboundMessage.java index f77243c2..bccfa06a 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/message/InboundMessage.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/message/InboundMessage.java @@ -36,7 +36,7 @@ import at.gv.egiz.eaaf.core.impl.utils.DomUtils;  import at.gv.egiz.eaaf.modules.pvp2.api.message.InboundMessageInterface;  import at.gv.egiz.eaaf.modules.pvp2.api.metadata.IPvp2MetadataProvider;  import at.gv.egiz.eaaf.modules.pvp2.exception.NoMetadataInformationException; -import net.shibboleth.utilities.java.support.resolver.ResolverException; +import net.shibboleth.shared.resolver.ResolverException;  public class InboundMessage implements InboundMessageInterface, Serializable {    private static final Logger log = LoggerFactory.getLogger(InboundMessage.class); diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/metadata/AbstractChainingMetadataProvider.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/metadata/AbstractChainingMetadataProvider.java index 32e82ce4..944fdabe 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/metadata/AbstractChainingMetadataProvider.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/metadata/AbstractChainingMetadataProvider.java @@ -50,10 +50,10 @@ import at.gv.egiz.eaaf.modules.pvp2.api.metadata.IPvp2MetadataProvider;  import at.gv.egiz.eaaf.modules.pvp2.api.metadata.IPvpAddableChainingMetadataProvider;  import at.gv.egiz.eaaf.modules.pvp2.api.metadata.IRefreshableMetadataProvider;  import lombok.extern.slf4j.Slf4j; -import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements; -import net.shibboleth.utilities.java.support.component.IdentifiedComponent; -import net.shibboleth.utilities.java.support.resolver.CriteriaSet; -import net.shibboleth.utilities.java.support.resolver.ResolverException; +import net.shibboleth.shared.annotation.constraint.NonnullElements; +import net.shibboleth.shared.component.IdentifiedComponent; +import net.shibboleth.shared.resolver.CriteriaSet; +import net.shibboleth.shared.resolver.ResolverException;  @Slf4j  public abstract class AbstractChainingMetadataProvider implements IGarbageCollectorProcessing, diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/metadata/PvpMetadataResolverAdapter.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/metadata/PvpMetadataResolverAdapter.java index f0291847..ca6bbb8f 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/metadata/PvpMetadataResolverAdapter.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/metadata/PvpMetadataResolverAdapter.java @@ -12,8 +12,8 @@ import org.opensaml.saml.saml2.metadata.EntityDescriptor;  import at.gv.egiz.eaaf.modules.pvp2.api.metadata.IPvp2MetadataProvider;  import at.gv.egiz.eaaf.modules.pvp2.api.metadata.IRefreshableMetadataProvider;  import lombok.extern.slf4j.Slf4j; -import net.shibboleth.utilities.java.support.resolver.CriteriaSet; -import net.shibboleth.utilities.java.support.resolver.ResolverException; +import net.shibboleth.shared.resolver.CriteriaSet; +import net.shibboleth.shared.resolver.ResolverException;  @Slf4j  public class PvpMetadataResolverAdapter implements IPvp2MetadataProvider, IRefreshableMetadataProvider { @@ -25,6 +25,11 @@ public class PvpMetadataResolverAdapter implements IPvp2MetadataProvider, IRefre    }    @Override +  public String getType() { +    return getId(); +  } + +  @Override    public void refresh() throws ResolverException {      internalProvider.refresh(); diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/metadata/PvpMetadataResolverFactory.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/metadata/PvpMetadataResolverFactory.java index bf541b67..2567e6a1 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/metadata/PvpMetadataResolverFactory.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/metadata/PvpMetadataResolverFactory.java @@ -4,12 +4,9 @@ import java.io.IOException;  import java.time.Duration;  import java.util.Timer; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import javax.annotation.PostConstruct;  import javax.net.ssl.SSLHandshakeException; -import org.apache.http.client.HttpClient; +import org.apache.hc.client5.http.classic.HttpClient;  import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;  import org.opensaml.saml.metadata.resolver.RefreshableMetadataResolver;  import org.opensaml.saml.metadata.resolver.filter.MetadataFilter; @@ -31,11 +28,14 @@ import at.gv.egiz.eaaf.modules.pvp2.exception.Pvp2MetadataException;  import at.gv.egiz.eaaf.modules.pvp2.exception.SchemaValidationException;  import at.gv.egiz.eaaf.modules.pvp2.exception.SignatureValidationException;  import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.OpenSaml3ResourceAdapter; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; +import jakarta.annotation.PostConstruct;  import lombok.extern.slf4j.Slf4j; -import net.shibboleth.utilities.java.support.component.ComponentInitializationException; -import net.shibboleth.utilities.java.support.resolver.ResolverException; -import net.shibboleth.utilities.java.support.resource.Resource; -import net.shibboleth.utilities.java.support.xml.ParserPool; +import net.shibboleth.shared.component.ComponentInitializationException; +import net.shibboleth.shared.resolver.ResolverException; +import net.shibboleth.shared.resource.Resource; +import net.shibboleth.shared.xml.ParserPool;  @Slf4j  public class PvpMetadataResolverFactory implements IDestroyableObject { diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/EaafHttpPostDecoder.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/EaafHttpPostDecoder.java index 87d897d6..58698d56 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/EaafHttpPostDecoder.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/EaafHttpPostDecoder.java @@ -3,8 +3,7 @@ package at.gv.egiz.eaaf.modules.pvp2.impl.opensaml;  import java.io.ByteArrayInputStream;  import java.io.InputStream;  import java.io.UnsupportedEncodingException; - -import javax.servlet.http.HttpServletRequest; +import java.util.Base64;  import org.opensaml.core.xml.XMLObject;  import org.opensaml.messaging.decoder.MessageDecodingException; @@ -14,9 +13,8 @@ import com.google.common.base.Strings;  import at.gv.egiz.eaaf.modules.pvp2.impl.utils.Saml2Utils;  import at.gv.egiz.eaaf.modules.pvp2.impl.utils.SamlHttpUtils; +import jakarta.servlet.http.HttpServletRequest;  import lombok.extern.slf4j.Slf4j; -import net.shibboleth.utilities.java.support.codec.Base64Support; -import net.shibboleth.utilities.java.support.codec.DecodingException;  /**   * SAML2 Post-Binding decoder with same EAAF specific hardening regarding http @@ -54,7 +52,7 @@ public class EaafHttpPostDecoder extends HTTPPostDecoder {      try {        log.trace("Base64 decoding SAML message: {}", encodedMessage); -      final byte[] decodedBytes = Base64Support.decode(encodedMessage); +      final byte[] decodedBytes = Base64.getDecoder().decode(encodedMessage);        try {          log.trace("Decoded SAML message: {}", new String(decodedBytes, "UTF-8")); @@ -66,7 +64,7 @@ public class EaafHttpPostDecoder extends HTTPPostDecoder {        return new ByteArrayInputStream(decodedBytes); -    } catch (final DecodingException e) {         +    } catch (final IllegalArgumentException e) {        log.error("Unable to Base64 decode SAML message");        throw new MessageDecodingException("Unable to Base64 decode SAML message",e);      }       diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/EaafHttpRedirectDeflateDecoder.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/EaafHttpRedirectDeflateDecoder.java index e4b5fedd..cbb80f4c 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/EaafHttpRedirectDeflateDecoder.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/EaafHttpRedirectDeflateDecoder.java @@ -2,8 +2,7 @@ package at.gv.egiz.eaaf.modules.pvp2.impl.opensaml;  import java.io.InputStream; -import javax.servlet.http.HttpServletRequest; - +import org.apache.commons.lang3.StringUtils;  import org.opensaml.core.xml.XMLObject;  import org.opensaml.messaging.context.MessageContext;  import org.opensaml.messaging.decoder.MessageDecodingException; @@ -16,8 +15,9 @@ import com.google.common.base.Strings;  import at.gv.egiz.eaaf.modules.pvp2.impl.utils.Saml2Utils;  import at.gv.egiz.eaaf.modules.pvp2.impl.utils.SamlHttpUtils; +import jakarta.servlet.http.HttpServletRequest;  import lombok.extern.slf4j.Slf4j; -import net.shibboleth.utilities.java.support.primitive.StringSupport; +  /**   * SAML2 Redirect-Binding deflate decoder with same EAAF specific hardening @@ -46,7 +46,7 @@ public class EaafHttpRedirectDeflateDecoder extends HTTPRedirectDeflateDecoder {        throw new MessageDecodingException("This message decoder only supports the HTTP GET method");      } -    final String samlEncoding = StringSupport.trimOrNull(request.getParameter("SAMLEncoding")); +    final String samlEncoding = StringUtils.trimToNull(request.getParameter("SAMLEncoding"));      if (samlEncoding != null && !SAMLConstants.SAML2_BINDING_URL_ENCODING_DEFLATE_URI.equals(samlEncoding)) {        throw new MessageDecodingException("Request indicated an unsupported SAMLEncoding: " + samlEncoding); diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/HttpPostEncoderWithOwnTemplate.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/HttpPostEncoderWithOwnTemplate.java index 396b513f..0f3a0fe4 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/HttpPostEncoderWithOwnTemplate.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/HttpPostEncoderWithOwnTemplate.java @@ -26,8 +26,6 @@ import java.io.InputStreamReader;  import java.io.OutputStreamWriter;  import java.io.Writer; -import javax.servlet.http.HttpServletResponse; -  import org.apache.velocity.VelocityContext;  import org.apache.velocity.app.Velocity;  import org.opensaml.messaging.context.MessageContext; @@ -37,8 +35,10 @@ import org.opensaml.saml.saml2.binding.encoding.impl.HTTPPostEncoder;  import at.gv.egiz.eaaf.core.api.gui.IVelocityGuiBuilderConfiguration;  import at.gv.egiz.eaaf.core.api.gui.IVelocityGuiFormBuilder;  import at.gv.egiz.eaaf.core.impl.gui.velocity.VelocityProvider; +import jakarta.servlet.http.HttpServletResponse;  import lombok.extern.slf4j.Slf4j; -import net.shibboleth.utilities.java.support.net.HttpServletSupport; +import net.shibboleth.shared.servlet.HttpServletSupport; +  /**   * OpenSAML2 Post-Binding encoder that uses dynamic loaded templates. diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/OpenSaml3ResourceAdapter.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/OpenSaml3ResourceAdapter.java index f474267f..912a8a31 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/OpenSaml3ResourceAdapter.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/OpenSaml3ResourceAdapter.java @@ -6,7 +6,7 @@ import java.io.InputStream;  import java.net.URI;  import java.net.URL; -import net.shibboleth.utilities.java.support.resource.Resource; +import net.shibboleth.shared.resource.Resource;  /**   * Adapter that connects a Spring {@link org.springframework.core.io.Resource} diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/initialize/EaafOpenSaml3xInitializer.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/initialize/EaafOpenSaml3xInitializer.java index 2c90bc57..a92692f2 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/initialize/EaafOpenSaml3xInitializer.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/opensaml/initialize/EaafOpenSaml3xInitializer.java @@ -19,6 +19,8 @@  package at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.initialize; + +  import java.util.HashMap;  import java.util.Map; @@ -43,9 +45,9 @@ import at.gv.egiz.eaaf.modules.pvp2.impl.builder.reqattr.EaafRequestedAttributes  import at.gv.egiz.eaaf.modules.pvp2.impl.builder.reqattr.EaafRequestedAttributesMarshaller;  import at.gv.egiz.eaaf.modules.pvp2.impl.builder.reqattr.EaafRequestedAttributesUnmarshaller;  import lombok.extern.slf4j.Slf4j; -import net.shibboleth.utilities.java.support.component.ComponentInitializationException; -import net.shibboleth.utilities.java.support.xml.BasicParserPool; -import net.shibboleth.utilities.java.support.xml.ParserPool; +import net.shibboleth.shared.component.ComponentInitializationException; +import net.shibboleth.shared.xml.ParserPool; +import net.shibboleth.shared.xml.impl.BasicParserPool;  /**   * EAAF specific OpenSAML Initializer. diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/utils/AbstractCredentialProvider.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/utils/AbstractCredentialProvider.java index e17e625e..e2cc3271 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/utils/AbstractCredentialProvider.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/utils/AbstractCredentialProvider.java @@ -29,9 +29,6 @@ import java.util.Collections;  import java.util.Enumeration;  import java.util.List; -import javax.annotation.Nonnull; -import javax.annotation.PostConstruct; -  import org.apache.commons.lang3.StringUtils;  import org.apache.xml.security.algorithms.JCEMapper;  import org.opensaml.security.credential.UsageType; @@ -50,6 +47,8 @@ import at.gv.egiz.eaaf.modules.pvp2.api.utils.IPvp2CredentialProvider;  import at.gv.egiz.eaaf.modules.pvp2.exception.CredentialsNotAvailableException;  import at.gv.egiz.eaaf.modules.pvp2.exception.SamlSigningException;  import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.EaafKeyStoreX509CredentialAdapter; +import jakarta.annotation.Nonnull; +import jakarta.annotation.PostConstruct;  import lombok.extern.slf4j.Slf4j;  @Slf4j diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/utils/Saml2Utils.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/utils/Saml2Utils.java index 5059b1fb..ead7e55f 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/utils/Saml2Utils.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/utils/Saml2Utils.java @@ -39,14 +39,6 @@ import javax.xml.transform.dom.DOMSource;  import javax.xml.validation.Schema;  import javax.xml.validation.Validator; -import at.gv.egiz.eaaf.core.impl.utils.DomUtils; -import at.gv.egiz.eaaf.core.impl.utils.Random; -import at.gv.egiz.eaaf.modules.pvp2.PvpConstants; -import at.gv.egiz.eaaf.modules.pvp2.api.credential.EaafX509Credential; -import at.gv.egiz.eaaf.modules.pvp2.api.reqattr.EaafRequestedAttribute; -import at.gv.egiz.eaaf.modules.pvp2.exception.SamlSigningException; -import at.gv.egiz.eaaf.modules.pvp2.exception.SchemaValidationException; -  import org.apache.commons.collections4.CollectionUtils;  import org.apache.commons.lang3.StringUtils;  import org.opensaml.core.xml.XMLObject; @@ -92,8 +84,16 @@ import org.w3c.dom.Document;  import org.w3c.dom.Element;  import org.xml.sax.SAXException; -import net.shibboleth.utilities.java.support.xml.QNameSupport; -import net.shibboleth.utilities.java.support.xml.SerializeSupport; +import at.gv.egiz.eaaf.core.impl.utils.DomUtils; +import at.gv.egiz.eaaf.core.impl.utils.Random; +import at.gv.egiz.eaaf.modules.pvp2.PvpConstants; +import at.gv.egiz.eaaf.modules.pvp2.api.credential.EaafX509Credential; +import at.gv.egiz.eaaf.modules.pvp2.api.reqattr.EaafRequestedAttribute; +import at.gv.egiz.eaaf.modules.pvp2.exception.SamlSigningException; +import at.gv.egiz.eaaf.modules.pvp2.exception.SchemaValidationException; +import net.shibboleth.shared.xml.QNameSupport; +import net.shibboleth.shared.xml.SerializeSupport; +  public class Saml2Utils {    private static final Logger log = LoggerFactory.getLogger(Saml2Utils.class); diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/utils/SamlHttpUtils.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/utils/SamlHttpUtils.java index 2e02bf22..be601715 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/utils/SamlHttpUtils.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/utils/SamlHttpUtils.java @@ -1,8 +1,9 @@  package at.gv.egiz.eaaf.modules.pvp2.impl.utils; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import javax.servlet.http.HttpServletRequest; + +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable; +import jakarta.servlet.http.HttpServletRequest;  public class SamlHttpUtils { diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/validation/EaafUriCompare.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/validation/EaafUriCompare.java index 9015c40b..d0e8b35a 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/validation/EaafUriCompare.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/validation/EaafUriCompare.java @@ -22,7 +22,9 @@ package at.gv.egiz.eaaf.modules.pvp2.impl.validation;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory; -import net.shibboleth.utilities.java.support.net.URIComparator; +import net.shibboleth.shared.net.URIComparator; + +  public class EaafUriCompare implements URIComparator {    private static final Logger log = LoggerFactory.getLogger(EaafUriCompare.class); diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/validation/SignatureTrustEngineDecorator.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/validation/SignatureTrustEngineDecorator.java index 66393bb4..c521771e 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/validation/SignatureTrustEngineDecorator.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/validation/SignatureTrustEngineDecorator.java @@ -9,7 +9,8 @@ import org.opensaml.xmlsec.signature.support.SignatureTrustEngine;  import at.gv.egiz.eaaf.modules.pvp2.api.metadata.IPvp2MetadataProvider;  import lombok.AllArgsConstructor;  import lombok.Getter; -import net.shibboleth.utilities.java.support.resolver.CriteriaSet; +import net.shibboleth.shared.resolver.CriteriaSet; +  @AllArgsConstructor  public class SignatureTrustEngineDecorator implements SignatureTrustEngine { diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/validation/TrustEngineFactory.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/validation/TrustEngineFactory.java index fe941f74..1231a1a6 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/validation/TrustEngineFactory.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/validation/TrustEngineFactory.java @@ -35,7 +35,8 @@ import org.opensaml.xmlsec.signature.support.impl.ExplicitKeySignatureTrustEngin  import at.gv.egiz.eaaf.modules.pvp2.api.metadata.IPvp2MetadataProvider;  import at.gv.egiz.eaaf.modules.pvp2.exception.Pvp2InternalErrorException;  import lombok.extern.slf4j.Slf4j; -import net.shibboleth.utilities.java.support.component.ComponentInitializationException; +import net.shibboleth.shared.component.ComponentInitializationException; +  @Slf4j  public class TrustEngineFactory { diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/validation/metadata/PvpEntityCategoryFilter.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/validation/metadata/PvpEntityCategoryFilter.java index 7317e7ba..391bbfac 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/validation/metadata/PvpEntityCategoryFilter.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/validation/metadata/PvpEntityCategoryFilter.java @@ -39,14 +39,13 @@ import org.opensaml.saml.saml2.metadata.Extensions;  import org.opensaml.saml.saml2.metadata.RequestedAttribute;  import org.opensaml.saml.saml2.metadata.SPSSODescriptor;  import org.opensaml.saml.saml2.metadata.ServiceName; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory;  import at.gv.egiz.eaaf.core.impl.data.Triple;  import at.gv.egiz.eaaf.modules.pvp2.PvpConstants;  import at.gv.egiz.eaaf.modules.pvp2.exception.Pvp2MetadataException;  import at.gv.egiz.eaaf.modules.pvp2.impl.builder.PvpAttributeBuilder;  import at.gv.egiz.eaaf.modules.pvp2.impl.utils.Saml2Utils; +import lombok.extern.slf4j.Slf4j;  /**   * Metadata filter that inject requested attributes based on Metadata @@ -55,8 +54,8 @@ import at.gv.egiz.eaaf.modules.pvp2.impl.utils.Saml2Utils;   * @author tlenz   *   */ +@Slf4j  public class PvpEntityCategoryFilter implements MetadataFilter { -  private static final Logger log = LoggerFactory.getLogger(PvpEntityCategoryFilter.class);    private boolean isUsed = false; @@ -71,6 +70,11 @@ public class PvpEntityCategoryFilter implements MetadataFilter {      this.isUsed = isUsed;    } +  @Override +  public String getType() { +    return PvpEntityCategoryFilter.class.getSimpleName(); +  } +    /*     * (non-Javadoc)     * @@ -79,8 +83,8 @@ public class PvpEntityCategoryFilter implements MetadataFilter {     * .XMLObject)     */    @Override -  public XMLObject filter(@Nullable final XMLObject metadata,  -      @Nonnull final MetadataFilterContext context)  throws FilterException { +  public XMLObject filter(@Nullable final XMLObject metadata, +      @Nonnull final MetadataFilterContext context) throws FilterException {      if (isUsed) {        log.trace("Map PVP EntityCategory to single PVP Attributes ... "); @@ -131,46 +135,38 @@ public class PvpEntityCategoryFilter implements MetadataFilter {            log.trace("Find ExtensionElement: " + el.getElementQName().toString());            if (el instanceof EntityAttributes) {              final EntityAttributes entityAttrElem = (EntityAttributes) el; -            if (entityAttrElem.getAttributes() != null) { -              log.trace("Find EntityAttributes. Start attribute processing ..."); -              for (final Attribute entityAttr : entityAttrElem.getAttributes()) { -                if (entityAttr.getName().equals(PvpConstants.ENTITY_CATEGORY_ATTRIBITE)) { -                  if (!entityAttr.getAttributeValues().isEmpty()) { -                    final String entityAttrValue = -                        entityAttr.getAttributeValues().get(0).getDOM().getTextContent(); -                    if (PvpConstants.EGOVTOKEN.equals(entityAttrValue)) { -                      log.debug( -                          "Find 'EGOVTOKEN' EntityAttribute. Adding single pvp attributes ... "); -                      addAttributesToEntityDescriptor(metadata, -                          buildAttributeList(PvpConstants.EGOVTOKEN_PVP_ATTRIBUTES), -                          entityAttrValue); - -                    } else if (PvpConstants.CITIZENTOKEN.equals(entityAttrValue)) { -                      log.debug( -                          "Find 'CITIZENTOKEN' EntityAttribute. Adding single pvp attributes ... "); -                      addAttributesToEntityDescriptor(metadata, -                          buildAttributeList(PvpConstants.CITIZENTOKEN_PVP_ATTRIBUTES), -                          entityAttrValue); - -                    } else { -                      log.info("EntityAttributeValue: " + entityAttrValue + " is UNKNOWN!"); -                    } +            log.trace("Find EntityAttributes. Start attribute processing ..."); +            for (final Attribute entityAttr : entityAttrElem.getAttributes()) { +              if (entityAttr.getName().equals(PvpConstants.ENTITY_CATEGORY_ATTRIBITE)) { +                if (!entityAttr.getAttributeValues().isEmpty()) { +                  final String entityAttrValue = +                      entityAttr.getAttributeValues().get(0).getDOM().getTextContent(); +                  if (PvpConstants.EGOVTOKEN.equals(entityAttrValue)) { +                    log.debug( +                        "Find 'EGOVTOKEN' EntityAttribute. Adding single pvp attributes ... "); +                    addAttributesToEntityDescriptor(metadata, +                        buildAttributeList(PvpConstants.EGOVTOKEN_PVP_ATTRIBUTES), +                        entityAttrValue); + +                  } else if (PvpConstants.CITIZENTOKEN.equals(entityAttrValue)) { +                    log.debug( +                        "Find 'CITIZENTOKEN' EntityAttribute. Adding single pvp attributes ... "); +                    addAttributesToEntityDescriptor(metadata, +                        buildAttributeList(PvpConstants.CITIZENTOKEN_PVP_ATTRIBUTES), +                        entityAttrValue);                    } else { -                    log.info("EntityAttribute: No attribute value"); +                    log.info("EntityAttributeValue: " + entityAttrValue + " is UNKNOWN!");                    }                  } else { -                  log.info("EntityAttribute: " + entityAttr.getName() + " is NOT supported"); +                  log.info("EntityAttribute: No attribute value");                  } +              } else { +                log.info("EntityAttribute: " + entityAttr.getName() + " is NOT supported");                } - -            } else { -              log.info( -                  "Can NOT resolve EntityAttributes! Reason: Only EntityAttributes are supported!");              } -            }          } diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/validation/metadata/SchemaValidationFilter.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/validation/metadata/SchemaValidationFilter.java index 2c7892f9..59d81d74 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/validation/metadata/SchemaValidationFilter.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/validation/metadata/SchemaValidationFilter.java @@ -19,8 +19,6 @@  package at.gv.egiz.eaaf.modules.pvp2.impl.validation.metadata; -import javax.annotation.Nonnull; -import javax.annotation.Nullable;  import javax.xml.transform.dom.DOMSource;  import javax.xml.validation.Schema;  import javax.xml.validation.Validator; @@ -35,6 +33,8 @@ import org.slf4j.Logger;  import org.slf4j.LoggerFactory;  import at.gv.egiz.eaaf.modules.pvp2.exception.SchemaValidationException; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable;  public class SchemaValidationFilter implements MetadataFilter {    private static final Logger log = LoggerFactory.getLogger(SchemaValidationFilter.class); @@ -59,6 +59,11 @@ public class SchemaValidationFilter implements MetadataFilter {      this.isActive = useSchemaValidation;    } +  @Override +  public String getType() { +    return SchemaValidationFilter.class.getSimpleName(); +  } +    /*     * (non-Javadoc)     * diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/validation/metadata/SimpleMetadataSignatureVerificationFilter.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/validation/metadata/SimpleMetadataSignatureVerificationFilter.java index f4b008af..39ed0893 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/validation/metadata/SimpleMetadataSignatureVerificationFilter.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/validation/metadata/SimpleMetadataSignatureVerificationFilter.java @@ -31,8 +31,6 @@ import java.security.cert.X509Certificate;  import java.util.ArrayList;  import java.util.List; -import javax.annotation.Nonnull; -  import org.apache.commons.lang3.ArrayUtils;  import org.apache.xml.security.keys.KeyInfo;  import org.apache.xml.security.keys.keyresolver.KeyResolverException; @@ -51,6 +49,7 @@ import at.gv.egiz.eaaf.core.exceptions.EaafException;  import at.gv.egiz.eaaf.core.impl.credential.EaafKeyStoreUtils;  import at.gv.egiz.eaaf.modules.pvp2.exception.Pvp2MetadataException;  import at.gv.egiz.eaaf.modules.pvp2.exception.SamlMetadataSignatureException; +import jakarta.annotation.Nonnull;  import lombok.extern.slf4j.Slf4j;  @Slf4j @@ -83,6 +82,11 @@ public class SimpleMetadataSignatureVerificationFilter extends AbstractMetadataS    }    @Override +  public String getType() { +    return SimpleMetadataSignatureVerificationFilter.class.getSimpleName(); +  } + +  @Override    protected void verify(EntityDescriptor desc) throws Pvp2MetadataException {      try {        internalVerify(desc); diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/verification/EaafMessageContextInitializationHandler.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/verification/EaafMessageContextInitializationHandler.java index 26f3d58e..9ddcabdc 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/verification/EaafMessageContextInitializationHandler.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/verification/EaafMessageContextInitializationHandler.java @@ -17,7 +17,8 @@ import at.gv.egiz.eaaf.modules.pvp2.api.metadata.IPvp2MetadataProvider;  import at.gv.egiz.eaaf.modules.pvp2.exception.Pvp2InternalErrorException;  import at.gv.egiz.eaaf.modules.pvp2.impl.validation.TrustEngineFactory;  import lombok.extern.slf4j.Slf4j; -import net.shibboleth.utilities.java.support.component.ComponentInitializationException; +import net.shibboleth.shared.component.ComponentInitializationException; +  @Slf4j  public class EaafMessageContextInitializationHandler extends AbstractMessageHandler { diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/verification/EaafSaml2HttpRedirectDeflateSignatureSecurityHandler.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/verification/EaafSaml2HttpRedirectDeflateSignatureSecurityHandler.java index 36c8a1ee..8061fec3 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/verification/EaafSaml2HttpRedirectDeflateSignatureSecurityHandler.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/verification/EaafSaml2HttpRedirectDeflateSignatureSecurityHandler.java @@ -1,7 +1,7 @@  package at.gv.egiz.eaaf.modules.pvp2.impl.verification; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; + +import java.util.Base64;  import org.opensaml.messaging.context.MessageContext;  import org.opensaml.messaging.handler.MessageHandlerException; @@ -14,9 +14,9 @@ import at.gv.egiz.eaaf.modules.pvp2.api.metadata.IPvp2MetadataProvider;  import at.gv.egiz.eaaf.modules.pvp2.api.metadata.IRefreshableMetadataProvider;  import at.gv.egiz.eaaf.modules.pvp2.exception.SamlSigningException;  import at.gv.egiz.eaaf.modules.pvp2.impl.utils.SamlHttpUtils; +import jakarta.annotation.Nonnull; +import jakarta.annotation.Nullable;  import lombok.extern.slf4j.Slf4j; -import net.shibboleth.utilities.java.support.codec.Base64Support; -import net.shibboleth.utilities.java.support.codec.DecodingException;  /**   * Always extracts the last http parameter with a specific name from request, if @@ -97,9 +97,9 @@ public class EaafSaml2HttpRedirectDeflateSignatureSecurityHandler extends      }      try { -      return Base64Support.decode(signature); +      return Base64.getDecoder().decode(signature); -    } catch (DecodingException e) { +    } catch (IllegalArgumentException e) {        throw new MessageHandlerException("Base64 decoding error", e);      }    } diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/verification/PvpSamlMessageHandlerChain.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/verification/PvpSamlMessageHandlerChain.java index 44ed2013..51cc2847 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/verification/PvpSamlMessageHandlerChain.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/verification/PvpSamlMessageHandlerChain.java @@ -9,7 +9,8 @@ import org.opensaml.messaging.handler.MessageHandlerChain;  import org.opensaml.messaging.handler.MessageHandlerException;  import lombok.extern.slf4j.Slf4j; -import net.shibboleth.utilities.java.support.component.ComponentInitializationException; +import net.shibboleth.shared.component.ComponentInitializationException; +  @Slf4j  public class PvpSamlMessageHandlerChain implements MessageHandlerChain { diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/verification/SamlVerificationEngine.java b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/verification/SamlVerificationEngine.java index 6cace5cb..bdbc6ac1 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/verification/SamlVerificationEngine.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/main/java/at/gv/egiz/eaaf/modules/pvp2/impl/verification/SamlVerificationEngine.java @@ -79,10 +79,10 @@ import at.gv.egiz.eaaf.modules.pvp2.impl.message.PvpSProfileRequest;  import at.gv.egiz.eaaf.modules.pvp2.impl.message.PvpSProfileResponse;  import at.gv.egiz.eaaf.modules.pvp2.impl.validation.SignatureTrustEngineDecorator;  import lombok.extern.slf4j.Slf4j; -import net.shibboleth.utilities.java.support.net.URIException; -import net.shibboleth.utilities.java.support.net.impl.BasicURLComparator; -import net.shibboleth.utilities.java.support.resolver.CriteriaSet; -import net.shibboleth.utilities.java.support.xml.SerializeSupport; +import net.shibboleth.shared.net.URIException; +import net.shibboleth.shared.net.impl.BasicURLComparator; +import net.shibboleth.shared.resolver.CriteriaSet; +import net.shibboleth.shared.xml.SerializeSupport;  @Slf4j  public class SamlVerificationEngine { diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/AbstractSamlVerificationEngine.java b/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/AbstractSamlVerificationEngine.java index 0eb80cc9..56ca877d 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/AbstractSamlVerificationEngine.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/AbstractSamlVerificationEngine.java @@ -50,7 +50,8 @@ import at.gv.egiz.eaaf.modules.pvp2.impl.verification.SamlVerificationEngine;  import at.gv.egiz.eaaf.modules.pvp2.test.dummy.DummyCredentialProvider;  import at.gv.egiz.eaaf.modules.pvp2.test.dummy.DummyMetadataProvider;  import lombok.SneakyThrows; -import net.shibboleth.utilities.java.support.xml.XMLParserException; +import net.shibboleth.shared.xml.XMLParserException; +  public abstract class AbstractSamlVerificationEngine { diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/SamlVerificationEngineEidasTest.java b/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/SamlVerificationEngineEidasTest.java index 4577b94b..2aea97ea 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/SamlVerificationEngineEidasTest.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/SamlVerificationEngineEidasTest.java @@ -34,7 +34,8 @@ import at.gv.egiz.eaaf.modules.pvp2.impl.utils.Saml2Utils;  import at.gv.egiz.eaaf.modules.pvp2.impl.verification.SamlVerificationEngine;  import at.gv.egiz.eaaf.modules.pvp2.test.dummy.DummyCredentialProvider;  import at.gv.egiz.eaaf.modules.pvp2.test.dummy.DummyMetadataProvider; -import net.shibboleth.utilities.java.support.xml.XMLParserException; +import net.shibboleth.shared.xml.XMLParserException; +  @Ignore  @RunWith(SpringJUnit4ClassRunner.class) diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/SamlVerificationEngineTest.java b/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/SamlVerificationEngineTest.java index 1f010d06..8b12cdda 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/SamlVerificationEngineTest.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/SamlVerificationEngineTest.java @@ -39,7 +39,8 @@ import at.gv.egiz.eaaf.modules.pvp2.impl.validation.TrustEngineFactory;  import at.gv.egiz.eaaf.modules.pvp2.impl.verification.SamlVerificationEngine;  import at.gv.egiz.eaaf.modules.pvp2.test.dummy.DummyCredentialProvider;  import at.gv.egiz.eaaf.modules.pvp2.test.dummy.DummyMetadataProvider; -import net.shibboleth.utilities.java.support.xml.XMLParserException; +import net.shibboleth.shared.xml.XMLParserException; +  @RunWith(SpringJUnit4ClassRunner.class)  @ContextConfiguration({ "/spring/test_eaaf_pvp.beans.xml", diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/SamlVerificationEngineWithHsmFacadeTest.java b/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/SamlVerificationEngineWithHsmFacadeTest.java index 1511eb73..c59d7bb7 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/SamlVerificationEngineWithHsmFacadeTest.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/SamlVerificationEngineWithHsmFacadeTest.java @@ -21,7 +21,7 @@ import at.gv.egiz.eaaf.modules.pvp2.exception.Pvp2MetadataException;  import at.gv.egiz.eaaf.modules.pvp2.exception.SamlAssertionValidationExeption;  import at.gv.egiz.eaaf.modules.pvp2.exception.SamlSigningException;  import lombok.SneakyThrows; -import net.shibboleth.utilities.java.support.xml.XMLParserException; +import net.shibboleth.shared.xml.XMLParserException;  //@IfProfileValue(name = "spring.profiles.active", value = "devEnvironment")  @RunWith(SpringJUnit4ClassRunner.class) diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/binding/PostBindingTest.java b/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/binding/PostBindingTest.java index e7c59459..f568df20 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/binding/PostBindingTest.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/binding/PostBindingTest.java @@ -68,9 +68,9 @@ import at.gv.egiz.eaaf.modules.pvp2.impl.utils.Saml2Utils;  import at.gv.egiz.eaaf.modules.pvp2.impl.validation.EaafUriCompare;  import at.gv.egiz.eaaf.modules.pvp2.test.dummy.DummyCredentialProvider;  import at.gv.egiz.eaaf.modules.pvp2.test.metadata.MetadataResolverTest; -import net.shibboleth.utilities.java.support.net.URIComparator; -import net.shibboleth.utilities.java.support.xml.SerializeSupport; -import net.shibboleth.utilities.java.support.xml.XMLParserException; +import net.shibboleth.shared.net.URIComparator; +import net.shibboleth.shared.xml.SerializeSupport; +import net.shibboleth.shared.xml.XMLParserException;  import okhttp3.HttpUrl;  import okhttp3.mockwebserver.MockResponse;  import okhttp3.mockwebserver.MockWebServer; diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/binding/RedirectBindingTest.java b/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/binding/RedirectBindingTest.java index bfa4a072..75eb08a5 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/binding/RedirectBindingTest.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/binding/RedirectBindingTest.java @@ -47,9 +47,9 @@ import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.initialize.EaafOpenSaml3xIniti  import at.gv.egiz.eaaf.modules.pvp2.impl.validation.EaafUriCompare;  import at.gv.egiz.eaaf.modules.pvp2.test.dummy.DummyCredentialProvider;  import at.gv.egiz.eaaf.modules.pvp2.test.metadata.MetadataResolverTest; -import net.shibboleth.utilities.java.support.net.URIComparator; -import net.shibboleth.utilities.java.support.net.URISupport; -import net.shibboleth.utilities.java.support.xml.XMLParserException; +import net.shibboleth.shared.net.URIComparator; +import net.shibboleth.shared.net.URISupport; +import net.shibboleth.shared.xml.XMLParserException;  import okhttp3.HttpUrl;  import okhttp3.mockwebserver.MockResponse;  import okhttp3.mockwebserver.MockWebServer; diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/binding/SoapBindingTest.java b/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/binding/SoapBindingTest.java index 97a896f5..4b0c2117 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/binding/SoapBindingTest.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/binding/SoapBindingTest.java @@ -37,10 +37,10 @@ import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.initialize.EaafOpenSaml3xIniti  import at.gv.egiz.eaaf.modules.pvp2.impl.utils.Saml2Utils;  import at.gv.egiz.eaaf.modules.pvp2.impl.validation.EaafUriCompare;  import at.gv.egiz.eaaf.modules.pvp2.test.dummy.DummyCredentialProvider; -import net.shibboleth.utilities.java.support.logic.Constraint; -import net.shibboleth.utilities.java.support.net.URIComparator; -import net.shibboleth.utilities.java.support.xml.SerializeSupport; -import net.shibboleth.utilities.java.support.xml.XMLParserException; +import net.shibboleth.shared.logic.Constraint; +import net.shibboleth.shared.net.URIComparator; +import net.shibboleth.shared.xml.SerializeSupport; +import net.shibboleth.shared.xml.XMLParserException;  @RunWith(SpringJUnit4ClassRunner.class)  @ContextConfiguration({"/spring/test_eaaf_pvp.beans.xml", diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/dummy/DummyMetadataProvider.java b/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/dummy/DummyMetadataProvider.java index 91da692c..bfa440e9 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/dummy/DummyMetadataProvider.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/dummy/DummyMetadataProvider.java @@ -82,4 +82,8 @@ public class DummyMetadataProvider extends AbstractChainingMetadataProvider {    } +  @Override +  public String getType() { +    return "DummyMetadataProvider for testing"; +  }  } diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/metadata/ChainingMetadataTest.java b/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/metadata/ChainingMetadataTest.java index 27c42c57..6b7fbf36 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/metadata/ChainingMetadataTest.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/metadata/ChainingMetadataTest.java @@ -4,15 +4,6 @@ import java.io.IOException;  import java.io.UnsupportedEncodingException;  import java.util.Arrays; -import at.gv.egiz.eaaf.core.api.idp.IConfiguration; -import at.gv.egiz.eaaf.core.impl.http.IHttpClientFactory; -import at.gv.egiz.eaaf.core.impl.utils.FileUtils; -import at.gv.egiz.eaaf.modules.pvp2.api.metadata.IPvp2MetadataProvider; -import at.gv.egiz.eaaf.modules.pvp2.exception.Pvp2MetadataException; -import at.gv.egiz.eaaf.modules.pvp2.impl.metadata.PvpMetadataResolverFactory; -import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.initialize.EaafOpenSaml3xInitializer; -import at.gv.egiz.eaaf.modules.pvp2.test.dummy.DummyMetadataProvider; -  import org.apache.commons.io.IOUtils;  import org.junit.Assert;  import org.junit.BeforeClass; @@ -27,8 +18,16 @@ import org.springframework.test.context.ContextConfiguration;  import org.springframework.test.context.TestPropertySource;  import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import net.shibboleth.utilities.java.support.resolver.CriteriaSet; -import net.shibboleth.utilities.java.support.resolver.ResolverException; +import at.gv.egiz.eaaf.core.api.idp.IConfiguration; +import at.gv.egiz.eaaf.core.impl.http.IHttpClientFactory; +import at.gv.egiz.eaaf.core.impl.utils.FileUtils; +import at.gv.egiz.eaaf.modules.pvp2.api.metadata.IPvp2MetadataProvider; +import at.gv.egiz.eaaf.modules.pvp2.exception.Pvp2MetadataException; +import at.gv.egiz.eaaf.modules.pvp2.impl.metadata.PvpMetadataResolverFactory; +import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.initialize.EaafOpenSaml3xInitializer; +import at.gv.egiz.eaaf.modules.pvp2.test.dummy.DummyMetadataProvider; +import net.shibboleth.shared.resolver.CriteriaSet; +import net.shibboleth.shared.resolver.ResolverException;  import okhttp3.HttpUrl;  import okhttp3.mockwebserver.MockResponse;  import okhttp3.mockwebserver.MockWebServer; diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/metadata/MetadataBuilderTest.java b/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/metadata/MetadataBuilderTest.java index 3cc0a908..2d6d437a 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/metadata/MetadataBuilderTest.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/metadata/MetadataBuilderTest.java @@ -51,7 +51,7 @@ import at.gv.egiz.eaaf.modules.pvp2.exception.CredentialsNotAvailableException;  import at.gv.egiz.eaaf.modules.pvp2.impl.builder.PvpMetadataBuilder;  import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.initialize.EaafOpenSaml3xInitializer;  import at.gv.egiz.eaaf.modules.pvp2.test.dummy.DummyCredentialProvider; -import net.shibboleth.utilities.java.support.xml.XMLParserException; +import net.shibboleth.shared.xml.XMLParserException; diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/metadata/MetadataResolverTest.java b/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/metadata/MetadataResolverTest.java index 511b7283..ff69af43 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/metadata/MetadataResolverTest.java +++ b/eaaf_modules/eaaf_module_pvp2_core/src/test/java/at/gv/egiz/eaaf/modules/pvp2/test/metadata/MetadataResolverTest.java @@ -71,11 +71,11 @@ import at.gv.egiz.eaaf.modules.pvp2.impl.validation.metadata.PvpEntityCategoryFi  import at.gv.egiz.eaaf.modules.pvp2.impl.validation.metadata.SchemaValidationFilter;  import at.gv.egiz.eaaf.modules.pvp2.impl.validation.metadata.SimpleMetadataSignatureVerificationFilter;  import at.gv.egiz.eaaf.modules.pvp2.test.dummy.DummyCredentialProvider; -import net.shibboleth.utilities.java.support.component.ComponentInitializationException; -import net.shibboleth.utilities.java.support.resolver.CriteriaSet; -import net.shibboleth.utilities.java.support.resolver.ResolverException; -import net.shibboleth.utilities.java.support.xml.SerializeSupport; -import net.shibboleth.utilities.java.support.xml.XMLParserException; +import net.shibboleth.shared.component.ComponentInitializationException; +import net.shibboleth.shared.resolver.CriteriaSet; +import net.shibboleth.shared.resolver.ResolverException; +import net.shibboleth.shared.xml.SerializeSupport; +import net.shibboleth.shared.xml.XMLParserException;  import okhttp3.HttpUrl;  import okhttp3.mockwebserver.MockResponse;  import okhttp3.mockwebserver.MockWebServer; @@ -174,9 +174,9 @@ public class MetadataResolverTest {      criteriaSet.add(new EntityRoleCriterion(SPSSODescriptor.DEFAULT_ELEMENT_NAME));      criteriaSet.add(new UsageCriterion(UsageType.SIGNING));      final SignatureValidationParameters sigValCrit = new SignatureValidationParameters(); -    sigValCrit.setBlacklistedAlgorithms( +    sigValCrit.setExcludedAlgorithms(          ConfigurationService.get(SignatureValidationConfiguration.class) -            .getBlacklistedAlgorithms()); +            .getExcludedAlgorithms());      sigValCrit.setSignatureTrustEngine(          TrustEngineFactory.getSignatureKnownKeysTrustEngine(mdResolver));      criteriaSet.add(new SignatureValidationParametersCriterion(sigValCrit)); @@ -579,9 +579,9 @@ public class MetadataResolverTest {      sigCriteriaSet.add(new EntityRoleCriterion(SPSSODescriptor.DEFAULT_ELEMENT_NAME));      sigCriteriaSet.add(new UsageCriterion(UsageType.SIGNING));      final SignatureValidationParameters sigValCrit = new SignatureValidationParameters(); -    sigValCrit.setBlacklistedAlgorithms( +    sigValCrit.setExcludedAlgorithms(          ConfigurationService.get(SignatureValidationConfiguration.class) -            .getBlacklistedAlgorithms()); +            .getExcludedAlgorithms());      sigValCrit.setSignatureTrustEngine(          TrustEngineFactory.getSignatureKnownKeysTrustEngine(mdResolver));      sigCriteriaSet.add(new SignatureValidationParametersCriterion(sigValCrit)); diff --git a/eaaf_modules/eaaf_module_pvp2_idp/checks/spotbugs-exclude.xml b/eaaf_modules/eaaf_module_pvp2_idp/checks/spotbugs-exclude.xml index 855f39bd..eddef970 100644 --- a/eaaf_modules/eaaf_module_pvp2_idp/checks/spotbugs-exclude.xml +++ b/eaaf_modules/eaaf_module_pvp2_idp/checks/spotbugs-exclude.xml @@ -11,4 +11,13 @@        <Class name="at.gv.egiz.eaaf.modules.pvp2.idp.impl.AbstractPvp2XProtocol"/>        <Bug pattern="CRLF_INJECTION_LOGS" />      </Match> +    <Match> +	  <OR> +        <Class name="at.gv.egiz.eaaf.modules.pvp2.idp.impl.PvpSProfilePendingRequest" /> +      </OR>       +      <OR> +    	<Bug pattern="EI_EXPOSE_REP" /> +    	<Bug pattern="EI_EXPOSE_REP2" /> +      </OR> +    </Match>      </FindBugsFilter> diff --git a/eaaf_modules/eaaf_module_pvp2_idp/src/main/java/at/gv/egiz/eaaf/modules/pvp2/idp/impl/AbstractPvp2XProtocol.java b/eaaf_modules/eaaf_module_pvp2_idp/src/main/java/at/gv/egiz/eaaf/modules/pvp2/idp/impl/AbstractPvp2XProtocol.java index a2611165..8084a2e0 100644 --- a/eaaf_modules/eaaf_module_pvp2_idp/src/main/java/at/gv/egiz/eaaf/modules/pvp2/idp/impl/AbstractPvp2XProtocol.java +++ b/eaaf_modules/eaaf_module_pvp2_idp/src/main/java/at/gv/egiz/eaaf/modules/pvp2/idp/impl/AbstractPvp2XProtocol.java @@ -23,10 +23,6 @@ import java.time.Duration;  import java.time.Instant;  import java.util.List; -import javax.annotation.PostConstruct; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -  import org.apache.commons.lang3.StringUtils;  import org.apache.commons.text.StringEscapeUtils;  import org.opensaml.saml.common.xml.SAMLConstants; @@ -79,6 +75,9 @@ import at.gv.egiz.eaaf.modules.pvp2.impl.utils.Saml2Utils;  import at.gv.egiz.eaaf.modules.pvp2.impl.validation.EaafUriCompare;  import at.gv.egiz.eaaf.modules.pvp2.impl.validation.TrustEngineFactory;  import at.gv.egiz.eaaf.modules.pvp2.impl.verification.SamlVerificationEngine; +import jakarta.annotation.PostConstruct; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse;  import lombok.Setter;  public abstract class AbstractPvp2XProtocol extends AbstractController implements IModulInfo { diff --git a/eaaf_modules/eaaf_module_pvp2_idp/src/main/java/at/gv/egiz/eaaf/modules/pvp2/idp/impl/AuthenticationAction.java b/eaaf_modules/eaaf_module_pvp2_idp/src/main/java/at/gv/egiz/eaaf/modules/pvp2/idp/impl/AuthenticationAction.java index a3c6cb5d..e5076a48 100644 --- a/eaaf_modules/eaaf_module_pvp2_idp/src/main/java/at/gv/egiz/eaaf/modules/pvp2/idp/impl/AuthenticationAction.java +++ b/eaaf_modules/eaaf_module_pvp2_idp/src/main/java/at/gv/egiz/eaaf/modules/pvp2/idp/impl/AuthenticationAction.java @@ -21,10 +21,6 @@ package at.gv.egiz.eaaf.modules.pvp2.idp.impl;  import java.time.Instant; -import javax.annotation.PostConstruct; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -  import org.opensaml.saml.common.xml.SAMLConstants;  import org.opensaml.saml.saml2.core.Assertion;  import org.opensaml.saml.saml2.core.AuthnRequest; @@ -58,6 +54,9 @@ import at.gv.egiz.eaaf.modules.pvp2.impl.binding.PostBinding;  import at.gv.egiz.eaaf.modules.pvp2.impl.binding.RedirectBinding;  import at.gv.egiz.eaaf.modules.pvp2.impl.message.PvpSProfileRequest;  import at.gv.egiz.eaaf.modules.pvp2.impl.utils.Saml2Utils; +import jakarta.annotation.PostConstruct; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse;  import lombok.Setter;  @Service("PVPAuthenticationRequestAction") diff --git a/eaaf_modules/eaaf_module_pvp2_idp/src/main/java/at/gv/egiz/eaaf/modules/pvp2/idp/impl/MetadataAction.java b/eaaf_modules/eaaf_module_pvp2_idp/src/main/java/at/gv/egiz/eaaf/modules/pvp2/idp/impl/MetadataAction.java index 0b344ba3..57d14bc4 100644 --- a/eaaf_modules/eaaf_module_pvp2_idp/src/main/java/at/gv/egiz/eaaf/modules/pvp2/idp/impl/MetadataAction.java +++ b/eaaf_modules/eaaf_module_pvp2_idp/src/main/java/at/gv/egiz/eaaf/modules/pvp2/idp/impl/MetadataAction.java @@ -19,9 +19,11 @@  package at.gv.egiz.eaaf.modules.pvp2.idp.impl; -import javax.annotation.PostConstruct; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Service;  import at.gv.egiz.eaaf.core.api.IRequest;  import at.gv.egiz.eaaf.core.api.idp.IAction; @@ -34,12 +36,9 @@ import at.gv.egiz.eaaf.modules.pvp2.api.metadata.IPvpMetadataConfigurationFactor  import at.gv.egiz.eaaf.modules.pvp2.api.utils.IPvp2CredentialProvider;  import at.gv.egiz.eaaf.modules.pvp2.exception.Pvp2MetadataException;  import at.gv.egiz.eaaf.modules.pvp2.impl.builder.PvpMetadataBuilder; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.MediaType; -import org.springframework.stereotype.Service; +import jakarta.annotation.PostConstruct; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse;  @Service("pvpMetadataService")  public class MetadataAction implements IAction { diff --git a/eaaf_modules/eaaf_module_pvp2_idp/src/main/java/at/gv/egiz/eaaf/modules/pvp2/idp/impl/builder/AuthResponseBuilder.java b/eaaf_modules/eaaf_module_pvp2_idp/src/main/java/at/gv/egiz/eaaf/modules/pvp2/idp/impl/builder/AuthResponseBuilder.java index 500482b2..bf3bf9c5 100644 --- a/eaaf_modules/eaaf_module_pvp2_idp/src/main/java/at/gv/egiz/eaaf/modules/pvp2/idp/impl/builder/AuthResponseBuilder.java +++ b/eaaf_modules/eaaf_module_pvp2_idp/src/main/java/at/gv/egiz/eaaf/modules/pvp2/idp/impl/builder/AuthResponseBuilder.java @@ -66,9 +66,9 @@ import at.gv.egiz.eaaf.modules.pvp2.api.metadata.IPvp2MetadataProvider;  import at.gv.egiz.eaaf.modules.pvp2.exception.SamlSigningException;  import at.gv.egiz.eaaf.modules.pvp2.idp.exception.InvalidAssertionEncryptionException;  import at.gv.egiz.eaaf.modules.pvp2.impl.utils.Saml2Utils; -import net.shibboleth.utilities.java.support.component.ComponentInitializationException; -import net.shibboleth.utilities.java.support.resolver.CriteriaSet; -import net.shibboleth.utilities.java.support.resolver.ResolverException; +import net.shibboleth.shared.component.ComponentInitializationException; +import net.shibboleth.shared.resolver.CriteriaSet; +import net.shibboleth.shared.resolver.ResolverException;  /**   * Authentication response builder. diff --git a/eaaf_modules/eaaf_module_pvp2_idp/src/test/java/at/gv/egiz/eaaf/modules/pvp2/idp/test/AuthnResponseBuilderTest.java b/eaaf_modules/eaaf_module_pvp2_idp/src/test/java/at/gv/egiz/eaaf/modules/pvp2/idp/test/AuthnResponseBuilderTest.java index f2df5e8d..429351a6 100644 --- a/eaaf_modules/eaaf_module_pvp2_idp/src/test/java/at/gv/egiz/eaaf/modules/pvp2/idp/test/AuthnResponseBuilderTest.java +++ b/eaaf_modules/eaaf_module_pvp2_idp/src/test/java/at/gv/egiz/eaaf/modules/pvp2/idp/test/AuthnResponseBuilderTest.java @@ -36,7 +36,7 @@ import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.initialize.EaafOpenSaml3xIniti  import at.gv.egiz.eaaf.modules.pvp2.impl.verification.SamlVerificationEngine;  import at.gv.egiz.eaaf.modules.pvp2.test.binding.PostBindingTest;  import at.gv.egiz.eaaf.modules.pvp2.test.dummy.DummyCredentialProvider; -import net.shibboleth.utilities.java.support.xml.XMLParserException; +import net.shibboleth.shared.xml.XMLParserException;  @RunWith(SpringJUnit4ClassRunner.class)  @ContextConfiguration({"/spring/test_eaaf_pvp.beans.xml"}) diff --git a/eaaf_modules/eaaf_module_pvp2_sp/checks/spotbugs-exclude.xml b/eaaf_modules/eaaf_module_pvp2_sp/checks/spotbugs-exclude.xml new file mode 100644 index 00000000..ff7f96e0 --- /dev/null +++ b/eaaf_modules/eaaf_module_pvp2_sp/checks/spotbugs-exclude.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<FindBugsFilter> +    <Match> +	  <OR> +        <Class name="at.gv.egiz.eaaf.modules.pvp2.sp.impl.utils.AssertionAttributeExtractor" /> +      </OR>       +      <OR> +    	<Bug pattern="EI_EXPOSE_REP" /> +    	<Bug pattern="EI_EXPOSE_REP2" /> +      </OR> +    </Match>     +</FindBugsFilter> diff --git a/eaaf_modules/eaaf_module_pvp2_sp/pom.xml b/eaaf_modules/eaaf_module_pvp2_sp/pom.xml index ea7f29fe..90e4866f 100644 --- a/eaaf_modules/eaaf_module_pvp2_sp/pom.xml +++ b/eaaf_modules/eaaf_module_pvp2_sp/pom.xml @@ -52,6 +52,18 @@    <build>      <finalName>eaaf_module_pvp2_sp</finalName> +    <plugins>       +      <plugin> +        <groupId>com.github.spotbugs</groupId> +        <artifactId>spotbugs-maven-plugin</artifactId> +        <version>${spotbugs-maven-plugin.version}</version> +        <configuration> +          <failOnError>true</failOnError> +          <excludeFilterFile>checks/spotbugs-exclude.xml</excludeFilterFile> +        </configuration> +      </plugin>       +    </plugins> +        </build>  </project> diff --git a/eaaf_modules/eaaf_module_pvp2_sp/src/main/java/at/gv/egiz/eaaf/modules/pvp2/sp/impl/PvpAuthnRequestBuilder.java b/eaaf_modules/eaaf_module_pvp2_sp/src/main/java/at/gv/egiz/eaaf/modules/pvp2/sp/impl/PvpAuthnRequestBuilder.java index bac90451..13a9cc7a 100644 --- a/eaaf_modules/eaaf_module_pvp2_sp/src/main/java/at/gv/egiz/eaaf/modules/pvp2/sp/impl/PvpAuthnRequestBuilder.java +++ b/eaaf_modules/eaaf_module_pvp2_sp/src/main/java/at/gv/egiz/eaaf/modules/pvp2/sp/impl/PvpAuthnRequestBuilder.java @@ -23,8 +23,6 @@ import java.security.NoSuchAlgorithmException;  import java.time.Instant;  import java.util.List; -import javax.servlet.http.HttpServletResponse; -  import org.apache.commons.lang3.StringUtils;  import org.opensaml.messaging.encoder.MessageEncodingException;  import org.opensaml.saml.common.xml.SAMLConstants; @@ -60,7 +58,8 @@ import at.gv.egiz.eaaf.modules.pvp2.impl.builder.reqattr.EaafRequestExtensionBui  import at.gv.egiz.eaaf.modules.pvp2.impl.utils.Saml2Utils;  import at.gv.egiz.eaaf.modules.pvp2.sp.api.IPvpAuthnRequestBuilderConfiguruation;  import at.gv.egiz.eaaf.modules.pvp2.sp.exception.AuthnRequestBuildException; -import net.shibboleth.utilities.java.support.security.impl.SecureRandomIdentifierGenerationStrategy; +import jakarta.servlet.http.HttpServletResponse; +import net.shibboleth.shared.security.impl.SecureRandomIdentifierGenerationStrategy;  /**   * PVP2 S-Profil Authentication-Request builder-implementation. diff --git a/eaaf_modules/eaaf_module_pvp2_sp/src/main/java/at/gv/egiz/eaaf/modules/pvp2/sp/impl/utils/AssertionAttributeExtractor.java b/eaaf_modules/eaaf_module_pvp2_sp/src/main/java/at/gv/egiz/eaaf/modules/pvp2/sp/impl/utils/AssertionAttributeExtractor.java index 4d8c8993..71421aae 100644 --- a/eaaf_modules/eaaf_module_pvp2_sp/src/main/java/at/gv/egiz/eaaf/modules/pvp2/sp/impl/utils/AssertionAttributeExtractor.java +++ b/eaaf_modules/eaaf_module_pvp2_sp/src/main/java/at/gv/egiz/eaaf/modules/pvp2/sp/impl/utils/AssertionAttributeExtractor.java @@ -316,13 +316,8 @@ public class AssertionAttributeExtractor {     * @return Date, when the SAML2 assertion was issued, otherwise null     */    public Instant getAssertionIssuingDate() { -    try { -      return getFullAssertion().getIssueInstant(); +    return getFullAssertion() != null ? getFullAssertion().getIssueInstant() : null; -    } catch (final NullPointerException e) { -      return null; - -    }    }    /** @@ -335,13 +330,11 @@ public class AssertionAttributeExtractor {     * @return Date, after this SAML2 assertion is valid, otherwise null     */    public Date getAssertionNotBefore() { -    try { -      return Date.from(getFullAssertion().getConditions().getNotBefore()); +    return getFullAssertion() != null && getFullAssertion().getConditions() != null +        && getFullAssertion().getConditions().getNotBefore() != null +        ? Date.from(getFullAssertion().getConditions().getNotBefore()) +        : null; -    } catch (final NullPointerException e) { -      return null; - -    }    }    private AuthnStatement getAuthnStatement() throws AssertionAttributeExtractorExeption { | 
