|
@@ -174,6 +174,10 @@ public final class OAuth2LoginConfigurer<B extends HttpSecurityBuilder<B>>
|
|
|
|
|
|
private String loginProcessingUrl = OAuth2LoginAuthenticationFilter.DEFAULT_FILTER_PROCESSES_URI;
|
|
private String loginProcessingUrl = OAuth2LoginAuthenticationFilter.DEFAULT_FILTER_PROCESSES_URI;
|
|
|
|
|
|
|
|
+ private ClientRegistrationRepository clientRegistrationRepository;
|
|
|
|
+
|
|
|
|
+ private OAuth2AuthorizedClientRepository authorizedClientRepository;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* Sets the repository of client registrations.
|
|
* Sets the repository of client registrations.
|
|
* @param clientRegistrationRepository the repository of client registrations
|
|
* @param clientRegistrationRepository the repository of client registrations
|
|
@@ -183,6 +187,7 @@ public final class OAuth2LoginConfigurer<B extends HttpSecurityBuilder<B>>
|
|
ClientRegistrationRepository clientRegistrationRepository) {
|
|
ClientRegistrationRepository clientRegistrationRepository) {
|
|
Assert.notNull(clientRegistrationRepository, "clientRegistrationRepository cannot be null");
|
|
Assert.notNull(clientRegistrationRepository, "clientRegistrationRepository cannot be null");
|
|
this.getBuilder().setSharedObject(ClientRegistrationRepository.class, clientRegistrationRepository);
|
|
this.getBuilder().setSharedObject(ClientRegistrationRepository.class, clientRegistrationRepository);
|
|
|
|
+ this.clientRegistrationRepository = clientRegistrationRepository;
|
|
return this;
|
|
return this;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -196,6 +201,7 @@ public final class OAuth2LoginConfigurer<B extends HttpSecurityBuilder<B>>
|
|
OAuth2AuthorizedClientRepository authorizedClientRepository) {
|
|
OAuth2AuthorizedClientRepository authorizedClientRepository) {
|
|
Assert.notNull(authorizedClientRepository, "authorizedClientRepository cannot be null");
|
|
Assert.notNull(authorizedClientRepository, "authorizedClientRepository cannot be null");
|
|
this.getBuilder().setSharedObject(OAuth2AuthorizedClientRepository.class, authorizedClientRepository);
|
|
this.getBuilder().setSharedObject(OAuth2AuthorizedClientRepository.class, authorizedClientRepository);
|
|
|
|
+ this.authorizedClientRepository = authorizedClientRepository;
|
|
return this;
|
|
return this;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -341,8 +347,7 @@ public final class OAuth2LoginConfigurer<B extends HttpSecurityBuilder<B>>
|
|
@Override
|
|
@Override
|
|
public void init(B http) throws Exception {
|
|
public void init(B http) throws Exception {
|
|
OAuth2LoginAuthenticationFilter authenticationFilter = new OAuth2LoginAuthenticationFilter(
|
|
OAuth2LoginAuthenticationFilter authenticationFilter = new OAuth2LoginAuthenticationFilter(
|
|
- OAuth2ClientConfigurerUtils.getClientRegistrationRepository(this.getBuilder()),
|
|
|
|
- OAuth2ClientConfigurerUtils.getAuthorizedClientRepository(this.getBuilder()), this.loginProcessingUrl);
|
|
|
|
|
|
+ this.getClientRegistrationRepository(), this.getAuthorizedClientRepository(), this.loginProcessingUrl);
|
|
authenticationFilter.setSecurityContextHolderStrategy(getSecurityContextHolderStrategy());
|
|
authenticationFilter.setSecurityContextHolderStrategy(getSecurityContextHolderStrategy());
|
|
this.setAuthenticationFilter(authenticationFilter);
|
|
this.setAuthenticationFilter(authenticationFilter);
|
|
super.loginProcessingUrl(this.loginProcessingUrl);
|
|
super.loginProcessingUrl(this.loginProcessingUrl);
|
|
@@ -433,8 +438,7 @@ public final class OAuth2LoginConfigurer<B extends HttpSecurityBuilder<B>>
|
|
if (this.authorizationEndpointConfig.authorizationRequestResolver != null) {
|
|
if (this.authorizationEndpointConfig.authorizationRequestResolver != null) {
|
|
return this.authorizationEndpointConfig.authorizationRequestResolver;
|
|
return this.authorizationEndpointConfig.authorizationRequestResolver;
|
|
}
|
|
}
|
|
- ClientRegistrationRepository clientRegistrationRepository = OAuth2ClientConfigurerUtils
|
|
|
|
- .getClientRegistrationRepository(getBuilder());
|
|
|
|
|
|
+ ClientRegistrationRepository clientRegistrationRepository = this.getClientRegistrationRepository();
|
|
ResolvableType resolvableType = ResolvableType.forClass(OAuth2AuthorizationRequestResolver.class);
|
|
ResolvableType resolvableType = ResolvableType.forClass(OAuth2AuthorizationRequestResolver.class);
|
|
OAuth2AuthorizationRequestResolver bean = getBeanOrNull(resolvableType);
|
|
OAuth2AuthorizationRequestResolver bean = getBeanOrNull(resolvableType);
|
|
if (bean != null) {
|
|
if (bean != null) {
|
|
@@ -447,6 +451,16 @@ public final class OAuth2LoginConfigurer<B extends HttpSecurityBuilder<B>>
|
|
return new DefaultOAuth2AuthorizationRequestResolver(clientRegistrationRepository, authorizationRequestBaseUri);
|
|
return new DefaultOAuth2AuthorizationRequestResolver(clientRegistrationRepository, authorizationRequestBaseUri);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private ClientRegistrationRepository getClientRegistrationRepository() {
|
|
|
|
+ return (this.clientRegistrationRepository != null) ? this.clientRegistrationRepository
|
|
|
|
+ : OAuth2ClientConfigurerUtils.getClientRegistrationRepository(this.getBuilder());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private OAuth2AuthorizedClientRepository getAuthorizedClientRepository() {
|
|
|
|
+ return (this.authorizedClientRepository != null) ? this.authorizedClientRepository
|
|
|
|
+ : OAuth2ClientConfigurerUtils.getAuthorizedClientRepository(this.getBuilder());
|
|
|
|
+ }
|
|
|
|
+
|
|
@SuppressWarnings("unchecked")
|
|
@SuppressWarnings("unchecked")
|
|
private JwtDecoderFactory<ClientRegistration> getJwtDecoderFactoryBean() {
|
|
private JwtDecoderFactory<ClientRegistration> getJwtDecoderFactoryBean() {
|
|
ResolvableType type = ResolvableType.forClassWithGenerics(JwtDecoderFactory.class, ClientRegistration.class);
|
|
ResolvableType type = ResolvableType.forClassWithGenerics(JwtDecoderFactory.class, ClientRegistration.class);
|
|
@@ -533,8 +547,7 @@ public final class OAuth2LoginConfigurer<B extends HttpSecurityBuilder<B>>
|
|
@SuppressWarnings("unchecked")
|
|
@SuppressWarnings("unchecked")
|
|
private Map<String, String> getLoginLinks() {
|
|
private Map<String, String> getLoginLinks() {
|
|
Iterable<ClientRegistration> clientRegistrations = null;
|
|
Iterable<ClientRegistration> clientRegistrations = null;
|
|
- ClientRegistrationRepository clientRegistrationRepository = OAuth2ClientConfigurerUtils
|
|
|
|
- .getClientRegistrationRepository(this.getBuilder());
|
|
|
|
|
|
+ ClientRegistrationRepository clientRegistrationRepository = this.getClientRegistrationRepository();
|
|
ResolvableType type = ResolvableType.forInstance(clientRegistrationRepository).as(Iterable.class);
|
|
ResolvableType type = ResolvableType.forInstance(clientRegistrationRepository).as(Iterable.class);
|
|
if (type != ResolvableType.NONE && ClientRegistration.class.isAssignableFrom(type.resolveGenerics()[0])) {
|
|
if (type != ResolvableType.NONE && ClientRegistration.class.isAssignableFrom(type.resolveGenerics()[0])) {
|
|
clientRegistrations = (Iterable<ClientRegistration>) clientRegistrationRepository;
|
|
clientRegistrations = (Iterable<ClientRegistration>) clientRegistrationRepository;
|