@light___soul
Full Stack Middle Web Developer

Два вида авторизации. Login, password + oAuth2 в spring security. Как сделать?

Есть Spring boot проект с авторизацией: логин + пароль.
class WebSecurityConfig extends WebSecurityConfigurerAdapter
@Configuration
@EnableWebSecurity
//@EnableOAuth2Sso
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private AuthUserService authUserService;

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http
                .csrf().disable()
                .authorizeRequests()
                .antMatchers("/admin", "/user", "/new-event", "/dict/**", "/data/**").authenticated() // только для зарегистрированных
                .antMatchers("/**", "/static/**", "/publish/**").permitAll() // общий доступ
                .anyRequest().authenticated() // только для зарегистрированных

                .and();

        http.formLogin()
                .loginPage("/login")
                .failureUrl("/login?error")
                .permitAll()
                .and();

        http.logout()
                .permitAll()
                .logoutUrl("/logout")
                .logoutSuccessUrl("/")
                .invalidateHttpSession(true);

    }

    @Override
    protected void configure(AuthenticationManagerBuilder authenticationManagerBuilder) throws Exception {
        authenticationManagerBuilder.userDetailsService(authUserService)
                .passwordEncoder(NoOpPasswordEncoder.getInstance());
    }
}



Добавил настройки авторизации через google
oAuth google

security.oauth2.client.client-id=id
security.oauth2.client.client-secret=secret
security.oauth2.client.client-authentication-scheme=form
security.oauth2.client.scope=openid,email,profile
security.oauth2.client.access-token-uri=https://www.googleapis.com/oauth2/v4/token
security.oauth2.client.user-authorization-uri=https://accounts.google.com/o/oauth2/v2/auth
security.oauth2.resource.user-info-uri=https://www.googleapis.com/oauth2/v3/userinfo
security.oauth2.resource.prefer-token-info=true


если раскомментировать @EnableOAuth2Sso из WebSecurityConfig
авторизация через google oAuth работает исправно, но не работает авторизация логин + пароль.

Как связать два вида авторизации через Spring security?
  • Вопрос задан
  • 1259 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы