Skip to content

Commit 0354cd1

Browse files
NFC-82 Signing cert conf logic to Auth Init Filter
Signed-off-by: Sander Kondratjev <[email protected]>
1 parent 8de0b0b commit 0354cd1

File tree

3 files changed

+14
-12
lines changed

3 files changed

+14
-12
lines changed

example/src/main/java/eu/webeid/example/config/ApplicationConfiguration.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ public SecurityFilterChain filterChain(
5555
AuthenticationConfiguration authConfig,
5656
ChallengeNonceGenerator challengeNonceGenerator,
5757
ITemplateEngine templateEngine,
58-
JakartaServletWebApplication webApp
58+
JakartaServletWebApplication webApp,
59+
WebEidMobileProperties webEidMobileProperties
5960
) throws Exception {
6061
return http
6162
.authorizeHttpRequests(auth -> auth
@@ -64,7 +65,7 @@ public SecurityFilterChain filterChain(
6465
.anyRequest().authenticated()
6566
)
6667
.authenticationProvider(webEidAuthenticationProvider)
67-
.addFilterBefore(new WebEidMobileAuthInitFilter("/auth/mobile/init", "/auth/mobile/login", challengeNonceGenerator), UsernamePasswordAuthenticationFilter.class)
68+
.addFilterBefore(new WebEidMobileAuthInitFilter("/auth/mobile/init", "/auth/mobile/login", challengeNonceGenerator, webEidMobileProperties), UsernamePasswordAuthenticationFilter.class)
6869
.addFilterBefore(new WebEidChallengeNonceFilter("/auth/challenge", challengeNonceGenerator), UsernamePasswordAuthenticationFilter.class)
6970
.addFilterBefore(new WebEidLoginPageGeneratingFilter("/auth/mobile/login", "/auth/login", templateEngine, webApp), UsernamePasswordAuthenticationFilter.class)
7071
.addFilterBefore(new WebEidAjaxLoginProcessingFilter("/auth/login", authConfig.getAuthenticationManager()), UsernamePasswordAuthenticationFilter.class)

example/src/main/java/eu/webeid/example/security/WebEidAuthenticationProvider.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,10 @@ public class WebEidAuthenticationProvider implements AuthenticationProvider {
5757

5858
private final AuthTokenValidator tokenValidator;
5959
private final ChallengeNonceStore challengeNonceStore;
60-
private final WebEidMobileProperties webEidMobileProperties;
6160

6261
public WebEidAuthenticationProvider(AuthTokenValidator tokenValidator, ChallengeNonceStore challengeNonceStore, WebEidMobileProperties webEidMobileProperties) {
6362
this.tokenValidator = tokenValidator;
6463
this.challengeNonceStore = challengeNonceStore;
65-
this.webEidMobileProperties = webEidMobileProperties;
6664
}
6765

6866
@Override
@@ -84,11 +82,6 @@ public Authentication authenticate(Authentication auth) throws AuthenticationExc
8482
.map(WebEidAuthToken::getSupportedSignatureAlgorithms)
8583
.orElse(null);
8684

87-
if (webEidMobileProperties.requestSigningCert()) {
88-
LOG.info("request-signing-cert=true -> Skipping signing certificate in authentication (demo mode)");
89-
return WebEidAuthentication.fromCertificate(userCertificate, null, null, authorities);
90-
}
91-
9285
return WebEidAuthentication.fromCertificate(userCertificate, signingCertificate, supportedSignatureAlgorithms, authorities);
9386
} catch (AuthTokenException e) {
9487
throw new AuthenticationServiceException("Web eID token validation failed", e);

example/src/main/java/eu/webeid/example/security/WebEidMobileAuthInitFilter.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.fasterxml.jackson.annotation.JsonProperty;
2626
import com.fasterxml.jackson.databind.ObjectMapper;
2727
import com.fasterxml.jackson.databind.ObjectWriter;
28+
import eu.webeid.example.config.WebEidMobileProperties;
2829
import eu.webeid.security.challenge.ChallengeNonceGenerator;
2930
import jakarta.servlet.FilterChain;
3031
import jakarta.servlet.ServletException;
@@ -47,11 +48,13 @@ public final class WebEidMobileAuthInitFilter extends OncePerRequestFilter {
4748
private final RequestMatcher requestMatcher;
4849
private final ChallengeNonceGenerator nonceGenerator;
4950
private final String mobileLoginPath;
51+
private final WebEidMobileProperties webEidMobileProperties;
5052

51-
public WebEidMobileAuthInitFilter(String path, String mobileLoginPath, ChallengeNonceGenerator nonceGenerator) {
53+
public WebEidMobileAuthInitFilter(String path, String mobileLoginPath, ChallengeNonceGenerator nonceGenerator, WebEidMobileProperties webEidMobileProperties) {
5254
this.requestMatcher = PathPatternRequestMatcher.withDefaults().matcher(HttpMethod.POST, path);
5355
this.nonceGenerator = nonceGenerator;
5456
this.mobileLoginPath = mobileLoginPath;
57+
this.webEidMobileProperties = webEidMobileProperties;
5558
}
5659

5760
@Override
@@ -68,8 +71,10 @@ protected void doFilterInternal(@NonNull HttpServletRequest request,
6871
String loginUri = ServletUriComponentsBuilder.fromCurrentContextPath()
6972
.path(mobileLoginPath).build().toUriString();
7073

74+
boolean getSigningCertificate = webEidMobileProperties.requestSigningCert();
75+
7176
String payloadJson = OBJECT_WRITER.writeValueAsString(
72-
new AuthPayload(challenge.getBase64EncodedNonce(), loginUri)
77+
new AuthPayload(challenge.getBase64EncodedNonce(), loginUri, getSigningCertificate)
7378
);
7479
String encoded = Base64.getEncoder().encodeToString(payloadJson.getBytes(StandardCharsets.UTF_8));
7580
String eidAuthUri = "web-eid-mobile://auth#" + encoded;
@@ -78,7 +83,10 @@ protected void doFilterInternal(@NonNull HttpServletRequest request,
7883
OBJECT_WRITER.writeValue(response.getWriter(), new AuthUri(eidAuthUri));
7984
}
8085

81-
record AuthPayload(String challenge, @JsonProperty("login_uri") String loginUri) {
86+
record AuthPayload(
87+
String challenge,
88+
@JsonProperty("login_uri") String loginUri,
89+
@JsonProperty("get_signing_certificate") boolean getSigningCertificate) {
8290
}
8391

8492
record AuthUri(@JsonProperty("auth_uri") String authUri) {

0 commit comments

Comments
 (0)