|
1 | 1 | /*
|
2 |
| - * Copyright 2002-2024 the original author or authors. |
| 2 | + * Copyright 2002-2025 the original author or authors. |
3 | 3 | *
|
4 | 4 | * Licensed under the Apache License, Version 2.0 (the "License");
|
5 | 5 | * you may not use this file except in compliance with the License.
|
|
68 | 68 | import org.springframework.security.oauth2.client.userinfo.OAuth2UserService;
|
69 | 69 | import org.springframework.security.oauth2.client.web.AuthenticatedPrincipalOAuth2AuthorizedClientRepository;
|
70 | 70 | import org.springframework.security.oauth2.client.web.AuthorizationRequestRepository;
|
| 71 | +import org.springframework.security.oauth2.client.web.DefaultOAuth2AuthorizationRequestResolver; |
71 | 72 | import org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestRedirectFilter;
|
72 | 73 | import org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestResolver;
|
73 | 74 | import org.springframework.security.oauth2.client.web.OAuth2AuthorizedClientRepository;
|
@@ -396,20 +397,8 @@ public void init(B http) throws Exception {
|
396 | 397 |
|
397 | 398 | @Override
|
398 | 399 | public void configure(B http) throws Exception {
|
399 |
| - OAuth2AuthorizationRequestRedirectFilter authorizationRequestFilter; |
400 |
| - if (this.authorizationEndpointConfig.authorizationRequestResolver != null) { |
401 |
| - authorizationRequestFilter = new OAuth2AuthorizationRequestRedirectFilter( |
402 |
| - this.authorizationEndpointConfig.authorizationRequestResolver); |
403 |
| - } |
404 |
| - else { |
405 |
| - String authorizationRequestBaseUri = this.authorizationEndpointConfig.authorizationRequestBaseUri; |
406 |
| - if (authorizationRequestBaseUri == null) { |
407 |
| - authorizationRequestBaseUri = OAuth2AuthorizationRequestRedirectFilter.DEFAULT_AUTHORIZATION_REQUEST_BASE_URI; |
408 |
| - } |
409 |
| - authorizationRequestFilter = new OAuth2AuthorizationRequestRedirectFilter( |
410 |
| - OAuth2ClientConfigurerUtils.getClientRegistrationRepository(this.getBuilder()), |
411 |
| - authorizationRequestBaseUri); |
412 |
| - } |
| 400 | + OAuth2AuthorizationRequestRedirectFilter authorizationRequestFilter = new OAuth2AuthorizationRequestRedirectFilter( |
| 401 | + getAuthorizationRequestResolver()); |
413 | 402 | if (this.authorizationEndpointConfig.authorizationRequestRepository != null) {
|
414 | 403 | authorizationRequestFilter
|
415 | 404 | .setAuthorizationRequestRepository(this.authorizationEndpointConfig.authorizationRequestRepository);
|
@@ -440,6 +429,24 @@ protected RequestMatcher createLoginProcessingUrlMatcher(String loginProcessingU
|
440 | 429 | return new AntPathRequestMatcher(loginProcessingUrl);
|
441 | 430 | }
|
442 | 431 |
|
| 432 | + private OAuth2AuthorizationRequestResolver getAuthorizationRequestResolver() { |
| 433 | + if (this.authorizationEndpointConfig.authorizationRequestResolver != null) { |
| 434 | + return this.authorizationEndpointConfig.authorizationRequestResolver; |
| 435 | + } |
| 436 | + ClientRegistrationRepository clientRegistrationRepository = OAuth2ClientConfigurerUtils |
| 437 | + .getClientRegistrationRepository(getBuilder()); |
| 438 | + ResolvableType resolvableType = ResolvableType.forClass(OAuth2AuthorizationRequestResolver.class); |
| 439 | + OAuth2AuthorizationRequestResolver bean = getBeanOrNull(resolvableType); |
| 440 | + if (bean != null) { |
| 441 | + return bean; |
| 442 | + } |
| 443 | + String authorizationRequestBaseUri = this.authorizationEndpointConfig.authorizationRequestBaseUri; |
| 444 | + if (authorizationRequestBaseUri == null) { |
| 445 | + authorizationRequestBaseUri = OAuth2AuthorizationRequestRedirectFilter.DEFAULT_AUTHORIZATION_REQUEST_BASE_URI; |
| 446 | + } |
| 447 | + return new DefaultOAuth2AuthorizationRequestResolver(clientRegistrationRepository, authorizationRequestBaseUri); |
| 448 | + } |
| 449 | + |
443 | 450 | @SuppressWarnings("unchecked")
|
444 | 451 | private JwtDecoderFactory<ClientRegistration> getJwtDecoderFactoryBean() {
|
445 | 452 | ResolvableType type = ResolvableType.forClassWithGenerics(JwtDecoderFactory.class, ClientRegistration.class);
|
|
0 commit comments