|
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,22 @@ 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 | + String authorizationRequestBaseUri = this.authorizationEndpointConfig.authorizationRequestBaseUri; |
| 441 | + if (authorizationRequestBaseUri == null) { |
| 442 | + authorizationRequestBaseUri = OAuth2AuthorizationRequestRedirectFilter.DEFAULT_AUTHORIZATION_REQUEST_BASE_URI; |
| 443 | + } |
| 444 | + return (bean != null) ? bean : new DefaultOAuth2AuthorizationRequestResolver(clientRegistrationRepository, |
| 445 | + authorizationRequestBaseUri); |
| 446 | + } |
| 447 | + |
443 | 448 | @SuppressWarnings("unchecked") |
444 | 449 | private JwtDecoderFactory<ClientRegistration> getJwtDecoderFactoryBean() { |
445 | 450 | ResolvableType type = ResolvableType.forClassWithGenerics(JwtDecoderFactory.class, ClientRegistration.class); |
|
0 commit comments