org.springframework.security.oauth2.config.annotation.OAuth2Configurer Maven / Gradle / Ivy
The newest version!
package org.springframework.security.oauth2.config.annotation;
import org.springframework.security.config.annotation.SecurityConfigurerAdapter;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.oauth2.client.filter.OAuth2ClientAuthenticationProcessingFilter;
import org.springframework.security.web.DefaultSecurityFilterChain;
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
import org.springframework.security.web.authentication.RememberMeServices;
import org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter;
import org.springframework.security.web.authentication.session.SessionAuthenticationStrategy;
public class OAuth2Configurer extends SecurityConfigurerAdapter {
private OAuth2ClientAuthenticationProcessingFilter filter;
private AuthenticationSuccessHandler authenticationSuccessHandler;
private AuthenticationFailureHandler authenticationFailureHandler;
public OAuth2Configurer(OAuth2ClientAuthenticationProcessingFilter filter) {
this.filter = filter;
}
@Override
public void init(HttpSecurity builder) throws Exception {
RememberMeServices rememberMeServices = builder.getSharedObject(RememberMeServices.class);
if (rememberMeServices != null) {
this.filter.setRememberMeServices(rememberMeServices);
}
}
public OAuth2Configurer authenticationSuccessHandler(AuthenticationSuccessHandler authenticationSuccessHandler) {
this.authenticationSuccessHandler = authenticationSuccessHandler;
return this;
}
public OAuth2Configurer authenticationFailureHandler(AuthenticationFailureHandler authenticationFailureHandler) {
this.authenticationFailureHandler = authenticationFailureHandler;
return this;
}
@Override
public void configure(HttpSecurity builder) throws Exception {
if (this.authenticationSuccessHandler != null) {
this.filter.setAuthenticationSuccessHandler(this.authenticationSuccessHandler);
}
if (this.authenticationFailureHandler != null) {
this.filter.setAuthenticationFailureHandler(this.authenticationFailureHandler);
}
this.filter.setSessionAuthenticationStrategy(builder.getSharedObject(SessionAuthenticationStrategy.class));
// builder.addFilterAfter(this.filter, RememberMeAuthenticationFilter.class);
builder.addFilterAfter(this.filter, AbstractPreAuthenticatedProcessingFilter.class);
}
}