|
16 | 16 |
|
17 | 17 | package org.springframework.security.config.annotation.web.configurers;
|
18 | 18 |
|
19 |
| -import java.lang.reflect.Constructor; |
20 | 19 | import java.util.HashSet;
|
21 | 20 | import java.util.Map;
|
22 | 21 | import java.util.Optional;
|
23 | 22 | import java.util.Set;
|
24 | 23 |
|
25 | 24 | import org.springframework.beans.factory.NoSuchBeanDefinitionException;
|
26 | 25 | import org.springframework.context.ApplicationContext;
|
27 |
| -import org.springframework.core.io.ClassPathResource; |
28 |
| -import org.springframework.http.HttpMethod; |
29 |
| -import org.springframework.http.MediaType; |
30 | 26 | import org.springframework.security.authentication.ProviderManager;
|
31 | 27 | import org.springframework.security.config.annotation.web.HttpSecurityBuilder;
|
32 | 28 | import org.springframework.security.core.userdetails.UserDetailsService;
|
|
35 | 31 | import org.springframework.security.web.authentication.ui.DefaultResourcesFilter;
|
36 | 32 | import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
|
37 | 33 | import org.springframework.security.web.csrf.CsrfToken;
|
38 |
| -import org.springframework.security.web.util.matcher.AntPathRequestMatcher; |
39 |
| -import org.springframework.security.web.util.matcher.RequestMatcher; |
40 | 34 | import org.springframework.security.web.webauthn.api.PublicKeyCredentialRpEntity;
|
41 | 35 | import org.springframework.security.web.webauthn.authentication.PublicKeyCredentialRequestOptionsFilter;
|
42 | 36 | import org.springframework.security.web.webauthn.authentication.WebAuthnAuthenticationFilter;
|
|
51 | 45 | import org.springframework.security.web.webauthn.registration.PublicKeyCredentialCreationOptionsFilter;
|
52 | 46 | import org.springframework.security.web.webauthn.registration.WebAuthnRegistrationFilter;
|
53 | 47 |
|
54 |
| -import static org.springframework.security.web.util.matcher.AntPathRequestMatcher.antMatcher; |
55 |
| - |
56 | 48 | /**
|
57 | 49 | * Configures WebAuthn for Spring Security applications
|
58 | 50 | *
|
@@ -133,23 +125,12 @@ public void configure(H http) throws Exception {
|
133 | 125 | DefaultLoginPageGeneratingFilter loginPageGeneratingFilter = http
|
134 | 126 | .getSharedObject(DefaultLoginPageGeneratingFilter.class);
|
135 | 127 | if (loginPageGeneratingFilter != null) {
|
136 |
| - ClassPathResource webauthn = new ClassPathResource( |
137 |
| - "org/springframework/security/spring-security-webauthn.js"); |
138 |
| - AntPathRequestMatcher matcher = antMatcher(HttpMethod.GET, "/login/webauthn.js"); |
139 |
| - |
140 |
| - Constructor<DefaultResourcesFilter> constructor = DefaultResourcesFilter.class |
141 |
| - .getDeclaredConstructor(RequestMatcher.class, ClassPathResource.class, MediaType.class); |
142 |
| - constructor.setAccessible(true); |
143 |
| - DefaultResourcesFilter resourcesFilter = constructor.newInstance(matcher, webauthn, |
144 |
| - MediaType.parseMediaType("text/javascript")); |
145 |
| - http.addFilter(resourcesFilter); |
146 |
| - DefaultLoginPageGeneratingFilter loginGeneratingFilter = http |
147 |
| - .getSharedObject(DefaultLoginPageGeneratingFilter.class); |
148 |
| - loginGeneratingFilter.setPasskeysEnabled(true); |
149 |
| - loginGeneratingFilter.setResolveHeaders((request) -> { |
| 128 | + loginPageGeneratingFilter.setPasskeysEnabled(true); |
| 129 | + loginPageGeneratingFilter.setResolveHeaders((request) -> { |
150 | 130 | CsrfToken csrfToken = (CsrfToken) request.getAttribute(CsrfToken.class.getName());
|
151 | 131 | return Map.of(csrfToken.getHeaderName(), csrfToken.getToken());
|
152 | 132 | });
|
| 133 | + http.addFilter(DefaultResourcesFilter.webauthn()); |
153 | 134 | }
|
154 | 135 | }
|
155 | 136 |
|
|
0 commit comments