• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

안녕하세요

20.01.30 23:41 작성 조회수 138

0

안녕하세요 강의 정말 잘듣고 있습니다.

현재까지 rest api 보안 적용중 스프링 스큐리티 폼 인증 설정을 했는데

get 요청을 authenticate()으로 준후 로그인 페이지에서 정확한 아이디와 비밀번호를 입력했음에도 다시 로그인 페이지로 리다이렉트 됩니다.(anonymous()주면 정삭적으로 작동합니다.)

일단 디비에 사용자 정보는 이미 제대로 들어가있는 상태이며 입력정보또한 올바르게 브라우저 상에서는 넘겨진다는 것을 확인 했으나 스프링 내부에서는 정확하게 받은거지를 확인하지 못했습니다.

어떤 클래스를 디버깅으로 잡아서 확인하면 좋을까요 ? 그리고 로그인 요청후 해당 아이디를 디비에서 조회하는 쿼리도 찍히지 않고 있습니다. 

답변 3

·

답변을 작성해보세요.

1

asdkfur님의 프로필

asdkfur

질문자

2020.02.01

감사합니다. 확인결과 AuthenticationManagerBuilder 가 제대로 등록되지않아서 생긴 문제였습니다. 

그래서 security config 파일내에서 해당 로직을 주석처리 하고 AuthenticationManager authenticationManagerBean()  를 대신 오버라이딩 한 결과 제대로 등록 되었습니다.

//    @Override
// public AuthenticationManager authenticationManager() throws Exception{
//
// return super.authenticationManagerBean();
// }

혹시 제가 현재 사용하는 Spring secuirty 버젼이 달라서 변화가 생긴건지는 확인하지 못했습니다만 기존  websercuirtyAdapter 클래스에 authenticationManger() 메서드에서 configure(AuthenticationMangerBuilder auth)메서드를 호출하는 것으로 보이는데 제가 authenticationManger() 를 오버라이딩하면서 configure 메서드가 호출조차 안되면서 AuthenticationManagerBuilder 가 등록이 안된는것으로 판단됩니다. 

항상 빠른답변 정말 감사드립니다.

0

Sungmin Oh님의 프로필

Sungmin Oh

2020.02.05

@Bean
@Override
public AuthenticationManager authenticationManagerBean () throws Exception {
return super.authenticationManagerBean();
}

저도 잘안되다가 이렇게 하니 되네요.

인텔리J 자동완성 기능으로 하니 authenticationManager() 이렇게만 작성되고 말더라구요. 

0

인증이 제대로 되지 않은거 같네요. PasswordEncoder도 제대로 설정하신게 맞나요?
스프링 시큐리티를 디버깅하시려면 UsernamePasswordAuthenticationFilter 내부에 디버깅 포인트를 잡고 한번 해보시기 바랍니다.