inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 시큐리티

스프링 시큐리티 마무리

formLogin() 과 oauth2Login() 를 같이 사용 못하나요?

989

플레어

작성한 질문수 17

0

로그인 페이지를, 기본 폼 로그인이 가능한 상태에서 oauth2 로그인(페이스북, 구글로그인 등)도 같이 되도록 구성하고 싶은데,  configure에 formLogin() 과 oauth2Login() 을 동시에 설정을 못하네요?

질문을 이렇게 드려도 되는진 모르겠는데, 스프링 시큐리티를 이용하면서 아이디/패스워드 로그인과 소셜로그인도 가능하게 하려면 어떻게 해야 하나요?

spring java

답변 2

4

백기선

좋은 질문이지만 그 질문에 답을 하려면 강좌를 만들어서 보여드려야 하는 수준의 질문이네요. (준비중입니다.)

지금 드릴 수 있는 답변은 폼로그인과 OAuth2 로그인을 동시에 설정할 수 있습니다. 정도겠네요.

http.formLogin()
.loginPage("/login").permitAll()
.and()
.oauth2Login();

다음에 좀 더 준비해서 시큐리티 후속 강좌로 OAuth2를 다루겠습니다.

0

플레어

답변감사합니다. 후속강좌 기대하겠습니다.

추가로 질문 드립니다.

제가 oauth2로 로그인하는 부분 샘플 찾아서 적용해봤는데요. 일단 인증은 됩니다. 인증 되는 시점에 데이터베이스에서 기 등록된 이메일인지 확인하고자 아래와 같이 memberRepository 를 주입받아서 사용하려고 하는데 주입이 안됩니다.

public class CustomOAuth2UserService extends DefaultOAuth2UserService {

@Autowired
private MemberRepository memberRepository; // <-- 디버그로 실행하면 이부분이 null 로 확인이 됩니다.

....

    @Override
public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {
...
        Member member = memberRepository.findByEmail(email);
...
}


최초 oauth2 로그인 처리 시 기존 가입자인지 체크하기 위해서 memberRepository 사용하려고 하는데 저 객체가 null 로 되어서 NullPointException 이 발생합니다. 왜 그런걸까요?? ㅠㅠ

아래 컨피그에서 oauth2Login() 부분에서 로그인 처리를 하고 호출하는 방식입니다.

public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/", "/oauth2/**", "/login/**", "/signup", "/css/**", "/images/**", "/js/**", "/console/**", "/favicon.ico/**")
.permitAll()
.anyRequest().authenticated()

.and()
.oauth2Login()
.userInfoEndpoint().userService(new CustomOAuth2UserService())

커스텀 로그인 페이지를 등록할 경우 LogoutFilter의 등록 여부 질문

0

384

1

anonymousClass를 사용하는 이유

0

387

1

ExcpetionTranslationFilter가 FilterSecurityInterceptor에서 발생하는 예외만 처리하는 이유

0

242

1

Principal 인터페이스와 User 클래스의 관계

0

756

1

passwordEncoder 질문드립니다.

0

320

1

WebSecurityConfigurerAdapter is deprecated 가 불편하신 분들을 위해

6

864

1

왜 스프링은 userid가 아니고 username을 사용했을까요?

0

1022

1

무상태성

0

347

2

로그인 후 로그인 페이지 접속

0

282

1

AuthenticationException은 어떤 경우에 발생하는지

0

557

1

AccountService에 비밀번호

1

225

1

커스텀 어노테이션 의 `커스텀 value` 설정방법에 관한 질문입니다.

0

356

1

passwordEncoder 빈 생성 시 차이

0

254

1

Bean 등록 관련 질문입니다.

0

248

1

시큐리티 전략관련

0

355

3

브라우저 기반 요청이 클라이언트의 요청을 처리 -> 의 의미?

0

228

1

AccountControllerTest 실행오류

0

1066

1

알려주신대로 설정을 해도 다시 302요청을 보냅니다....

0

342

1

voter에 대해 질문이 있습니다.

0

226

1

제가 맞게 이해한것인지 궁금합니다.

1

234

1

Spring security test 수행시 @AuthenticationPrincipal 가 null 로 세팅됨

0

550

1

Spring security Multi 인증 문의드려요

0

290

1

ProviderManager 문의

0

269

1

UserDetailsService 가 DaoAuthenticationProvider 에 어떻게 주입 되는지 알 수 있을 까요?

0

328

1