[Spring] 스프링 시큐리티

스프링 시큐리티

스프링 기반의 애플리케이션 보안(인증, 인가, 권한)을 담당하는 스프링 하위 프레임워크

인증과 인가

인증

  • 사용자의 신원을 입증하는 과정
  • 예) 사용자가 사이트에 로그인을 할 때 누구인지 확인하는 과정

    인가

  • 사이트의 특정 부분에 접근할 수 있는지에 권한을 확인하는 작업
  • 예) 관리자는 관리자 페이지에 들어갈 수 있음, 일반 사용자는 관리자 페이지에 들어갈 수 없음

스프링 시큐리티

  • 스프링 기반 애플리케이션의 보안을 담당하는 스프링 하위 프레임워크
  • CSRF 공격, 세션 고정 공격 방어, 요청 헤더의 보안처리
  • CSRF 공격 : 사용자의 권한을 가지고 특정 동작을 수행하도록 유도하는 공격
  • 세션 고정 공격 : 사용자의 인증 정보를 탈취하거나 변조하는 공격

스프링 시큐리티에서 아이디와 패스워드 기반 폼 로그인 시도 시(참고))

  1. HTTP 요청 : 사용자가 폼에 아이디와 패스워드를 입력하면, HTTPServletRequest에 아이디와 비밀번호 정보가 전달. 이떄 AuthenticationFilter가 넘어온 아이디와 비밀번호의 유효성 검사
  2. AuthenticationFilter : 유효성 검사가 끝나면 실제 구현체인 UsernamePasswordAuthenticationToken을 만들어 넘겨줌
  3. AuthenticationFilter : 전달받은 인증용 객체인 UsernamePasswordAuthenticationToken을 AuthenticationManager에 보냄
  4. AuthenticationManager : UsernamePasswordAuthenticationToken을 AuthenticationProvider에 보냄
  5. AuthenticationProvider(s) : 사용자 아이디를 UserDetaiService에 보냄. UserDetailService는 사용자 아이디로 찾은 사용자의 정보를 UserDetail 객체로 만들어 AuthenticationProvider에 전달
  6. UserDetailService : DB에 있는 사용자 정보를 가져옴
  7. UserDetailService : 입력 정보와 UserDetails의 정보를 비교해 실제 인증 처리
  8. AuthenticationProvider(s) : 인증 ~
  9. AuthenticationManager : 인증 ~
  10. AuthenticationFilter : 8~10의 모든 인증이 완료되면 SecurityContextHolder에 Authentication를 저장. 인증 성공 여부에 따라 성공하면 AuthenticationSuccessHandler, 실패하면 AuthenticationFailureHandler를 실행

Categories:

Updated:

Leave a comment