All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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);
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy