콘텐츠로 이동

2022 07 11

2022-07-11

Spring Security를 통한 인증 및 권한 부여

  • 참고: https://daddyprogrammer.org/post/636/springboot2-springsecurity-authentication-authorization/
  • SpringSecurity
    • 인증 및 권한 부여를 통해 리소스의 사용을 쉽게 컨트롤할 수 있는 SpringSecurity Framework를 제공함
    • 보안 관련 처리를 자체적으로 구현할 필요 없이 쉽게 필요한 기능을 구현할 수 있음
    • DispatcherServlet 앞단에 Filter를 등록시켜 요청을 가로챔
    • 클라이언트에게 리소스 접근 권한이 없다면 자동으로 로그인 화면으로 리다이렉트
  • SpringSecurity Filter
    • 기능별 필터의 집합으로 되어있고 필터의 처리 순서는 아래와 같음
    • 클라이언트가 리소스 접근 권한이 없는 경우 기본적으로 로그인 폼으로 보냄: UsernamePasswordAuthenticationFilter
      • RestAPI에서는 로그인 폼이 없으니, UsernamePasswordAuthenticationFilter 전에 관련 처리를 넣어야 함
    • Filter 순서
      1. ChannelProcessingFilter
      2. SecurityContextPersistenceFilter
      3. ConcurrentSessionFilter
      4. HeaderWriterFilter
      5. CsrfFilter
      6. LogoutFilter
      7. X509AuthenticationFilter
      8. AbstractPreAuthenticatedProcessingFilter
      9. CasAuthenticationFilter
      10. UsernamePasswordAuthenticationFilter
      11. BasicAuthenticationFilter
      12. SecurityContextHolderAwareRequestFilter
      13. JaasApiIntegrationFilter
      14. RememberMeAuthenticationFilter
      15. AnonymousAuthenticationFilter
      16. SessionManagementFilter
      17. ExceptionTranslatorFilter
      18. FilterSecurityInterceptor
      19. SwitchUserFilter
  • API 인증 및 제한된 리소스의 요청
    • 인증을 위해 가입 및 로그인 api를 구현
    • ROLE_USER 권한을 회원에게 부여
  • JwtAuthenticationFilter
    • UsernamePasswordAuthenticationFilter 앞에 세팅