4343import java .security .cert .X509Certificate ;
4444import java .util .Collections ;
4545import java .util .List ;
46- import java .util .Optional ;
4746
4847/**
4948 * Parses JWT from token string inside AuthTokenDTO and attempts authentication.
@@ -57,10 +56,12 @@ public class WebEidAuthenticationProvider implements AuthenticationProvider {
5756
5857 private final AuthTokenValidator tokenValidator ;
5958 private final ChallengeNonceStore challengeNonceStore ;
59+ private final boolean requireSigningCert ;
6060
6161 public WebEidAuthenticationProvider (AuthTokenValidator tokenValidator , ChallengeNonceStore challengeNonceStore , WebEidMobileProperties webEidMobileProperties ) {
6262 this .tokenValidator = tokenValidator ;
6363 this .challengeNonceStore = challengeNonceStore ;
64+ this .requireSigningCert = webEidMobileProperties .requestSigningCert ();
6465 }
6566
6667 @ Override
@@ -75,12 +76,12 @@ public Authentication authenticate(Authentication auth) throws AuthenticationExc
7576 try {
7677 final String nonce = challengeNonceStore .getAndRemove ().getBase64EncodedNonce ();
7778 final X509Certificate userCertificate = tokenValidator .validate (authToken , nonce );
78- final String signingCertificate = Optional . ofNullable ( authToken )
79- . map ( WebEidAuthToken :: getUnverifiedSigningCertificate )
80- . orElse ( null ) ;
81- final List <SupportedSignatureAlgorithm > supportedSignatureAlgorithms = Optional . ofNullable ( authToken )
82- . map ( WebEidAuthToken :: getSupportedSignatureAlgorithms )
83- . orElse ( null ) ;
79+ final String signingCertificate = requireSigningCert
80+ ? authToken . getUnverifiedSigningCertificate ( )
81+ : null ;
82+ final List <SupportedSignatureAlgorithm > supportedSignatureAlgorithms = requireSigningCert
83+ ? authToken . getSupportedSignatureAlgorithms ( )
84+ : null ;
8485
8586 return WebEidAuthentication .fromCertificate (userCertificate , signingCertificate , supportedSignatureAlgorithms , authorities );
8687 } catch (AuthTokenException e ) {
0 commit comments