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

황상익님의 프로필 이미지

작성한 질문수

스프링 시큐리티 완전 정복 [6.x 개정판]

질문 있어서 남기게 됩니다.

작성

·

48

0

사이드 프로젝트를 하다가 SpringSecurity를 좀더 잘 구햔해보고 싶어 강의를 들으면서 sideproject에 springSecurity를 도입하고 있습니다.
수업 내용과는 상이한 질문이라 드려도 될지 조심스럽습니다만, 혼자 공부하고 있어 여주어 볼 곳이 선생님 밖에 없어 질문을 남기게 됩니다.

권한을 설정해 주고, 회원에게 권한을 직접 지정해 주는 방식으로 진행했는데, api test해본 결과 계속
Set SecurityContextHolder to anonymous SecurityContext라는 오류가 발생합니다.

시간이 괜찮으시다면, 진행중인 sideProject에서 security 부분이 어디가 잘못되었는지 팁을 주시면 감사하겠습니다.

https://github.com/Fangsangik/fintech_rebuilding

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

황상익님, Spring Security를 도입하고 계시는데 Set SecurityContextHolder to anonymous SecurityContext 오류가 발생하고 있다고 하셨습니다. 이는 보통 인증된 유저의 컨텍스트가 제대로 유지되지 않는 경우에 발생합니다.

다양한 이유로 이 오류가 발생할 수 있지만 몇 가지 일반적인 원인을 말씀드리겠습니다:

  1. Security Configuration:

    • SecurityConfig가 제대로 설정되었는지 확인하세요. 예를 들어, URL 패턴에 맞는 적절한 인증/권한 설정이 있는지 체크해보세요.
    • httpSecurity 설정 내에서 authorizeRequests와 같은 메서드들이 올바르게 사용되고 있는지 확인하시기 바랍니다.
  2. Authentication:

    • 실제 인증 로직에서 유저가 정상적으로 인증되었는지 확인하세요. 예를 들어, UserDetailsService를 통해 유저가 로드되고 있는지, 그리고 유저 객체가 올바르게 반환되는지 체크하세요.
  3. Session Management:

    • 인증 후 세션이 관리되는지 확인하세요. 예를 들어 세션이 계속 유지되는지, 필요하지 않은 경우 세션이 만료되지 않는지 등을 체크하세요.
  4. Testing:

    • 테스트 시 Security 컨텍스트를 Mocking해서 사용하는지 확인하시기 바랍니다. 예시를 들어 SpringBoot의 다큐멘테이션에서는 아래와 같이 WithMockUser 어노테이션을 사용합니다:

      @WebMvcTest(UserController.class)
      class MySecurityTests {
       @Autowired
       private MockMvc mvc;
      
      
       @Test
       @WithMockUser(roles = "ADMIN")
       void requestProtectedUrlWithUser() throws Exception {
           this.mvc.perform(get("/"));
       }
      }
      
    • 더 많은 정보는 여기서 확인하실 수 있습니다.

위 정보들이 도움이 되었으면 좋겠습니다. 만약 추가적으로 코드 검토나 구체적인 도움이 필요하시다면 언제든지 질문 남겨주세요. 감사합니다.