인프런 커뮤니티 질문&답변

literate_t님의 프로필 이미지
literate_t

작성한 질문수

스프링 시큐리티 OAuth2

AuthenticationEntryPoint

ExceptionTranslationFilter에서 this.authenticationEntryPoint.commence(request, response, reason)에 중단점이 걸리지 않습니다ㅠ

작성

·

258

·

수정됨

0

안녕하세요.

거의 동일한 환경에서 실습 진행 중입니다.
스프링부트 2.7.2 버전입니다.

리소스 서버 인증 방식으로 해서 루트 경로 접근 시 401 error가 뜨려면 기본 엔트리포인트 객체인 BearerTokenAuthenticationEntryPoint의 commence 함수가 호출되어야 할 텐데요..그 로직을 안 탑니다. 그런데 401 error은 정상적으로 떠요.

ExceptionTranslationFilter의 sendStartAuthentication 함수 안에도 중단점을 걸어보고 BearerTokenAuthenticationEntryPoint의 commence 함수에도 중단점을 모두 걸어봤는데도 안 되네요. 미스테리입니다. yml 파일만 작성했으므로 코드 상의 실수도 없을 텐데 말이죠ㅠ

+다른 엔트리 포인트에도 전부 중단점을 걸어보았는데 어디에도 걸리지 않네요

브랜치 링크입니다!

답변 2

1

정수원님의 프로필 이미지
정수원
지식공유자

음..

혹시 CSRF 기능에 걸리지 않았을까 하는 생각이 듭니다.

지금 요청이 POST 방식이고 CSRF 기능이 활성화되어 있다면(기본은 활성화되어 있음) 요청 시 csrf 토큰이 헤더 혹은 파라미터에 전달이 되어야 합니다.

아니면 csrf.disabled() 로 비활성화 해야 합니다.
이 부분을 한번 체크해 보십시오

1

안녕하세요, 인프런 AI 인턴입니다.
literate_t님, 스프링 보안과 관련하여 질문 주셨군요.

ExceptionTranslationFilter 내부에서 설정된 authenticationEntryPoint의 commence 함수가 호출되지 않는 문제를 겪고 계시군요. 체크리스트를 확인해보겠습니다:

  1. 스프링 시큐리티의 디버그 로그가 활성화되어 있나요? 디버그 로깅을 활성화하면 내부에서 어떤 일이 발생하는지 더 잘 이해할 수 있습니다.
  2. 인증 메커니즘 구성이 올바르게 되어 있는지 확인하세요. 401 에러는 인증 문제로 발생하는데, 스프링 시큐리티 인증 프로세스의 어느 단계에서 이 문제가 발생하는지 파악이 필요합니다.
  3. 다른 스프링 시큐리티 필터가 중단점에 도달하기 전에 요청을 처리하고 있는지 확인하세요. 스프링 시큐리티는 필터 기반으로 동작하므로, 다른 필터가 예외를 처리하고 있을 수 있습니다.
  4. 스프링 시큐리티의 올바른 버전을 사용하고 있는지 확인하고, 만약 알맞은 버전이 아니라면 문제가 될 수 있는 부분을 체크해보세요.

브랜치 링크를 통해 코드를 공유해주셔서 감사합니다. 해당 코드를 살펴보면서 위 사항들을 체크해보시고, 이상이 있을 경우 버그 가능성이 있으니 스프링 시큐리티 관련 커뮤니티나 이슈 트래커에 보고하는 것을 고려해보시는 것도 좋을 것 같습니다.

추가 질문 사항이 있으시다면 언제든지 문의해주세요.

literate_t님의 프로필 이미지
literate_t

작성한 질문수

질문하기