[Spring] 스프링 시큐리티
스프링 시큐리티
스프링 기반의 애플리케이션 보안(인증, 인가, 권한)을 담당하는 스프링 하위 프레임워크
인증과 인가
인증
- 사용자의 신원을 입증하는 과정
- 예) 사용자가 사이트에 로그인을 할 때 누구인지 확인하는 과정
인가
- 사이트의 특정 부분에 접근할 수 있는지에 권한을 확인하는 작업
- 예) 관리자는 관리자 페이지에 들어갈 수 있음, 일반 사용자는 관리자 페이지에 들어갈 수 없음
스프링 시큐리티
- 스프링 기반 애플리케이션의 보안을 담당하는 스프링 하위 프레임워크
- CSRF 공격, 세션 고정 공격 방어, 요청 헤더의 보안처리
- CSRF 공격 : 사용자의 권한을 가지고 특정 동작을 수행하도록 유도하는 공격
- 세션 고정 공격 : 사용자의 인증 정보를 탈취하거나 변조하는 공격
스프링 시큐리티에서 아이디와 패스워드 기반 폼 로그인 시도 시(참고))
- HTTP 요청 : 사용자가 폼에 아이디와 패스워드를 입력하면, HTTPServletRequest에 아이디와 비밀번호 정보가 전달. 이떄 AuthenticationFilter가 넘어온 아이디와 비밀번호의 유효성 검사
- AuthenticationFilter : 유효성 검사가 끝나면 실제 구현체인 UsernamePasswordAuthenticationToken을 만들어 넘겨줌
- AuthenticationFilter : 전달받은 인증용 객체인 UsernamePasswordAuthenticationToken을 AuthenticationManager에 보냄
- AuthenticationManager : UsernamePasswordAuthenticationToken을 AuthenticationProvider에 보냄
- AuthenticationProvider(s) : 사용자 아이디를 UserDetaiService에 보냄. UserDetailService는 사용자 아이디로 찾은 사용자의 정보를 UserDetail 객체로 만들어 AuthenticationProvider에 전달
- UserDetailService : DB에 있는 사용자 정보를 가져옴
- UserDetailService : 입력 정보와 UserDetails의 정보를 비교해 실제 인증 처리
- AuthenticationProvider(s) : 인증 ~
- AuthenticationManager : 인증 ~
- AuthenticationFilter : 8~10의 모든 인증이 완료되면 SecurityContextHolder에 Authentication를 저장. 인증 성공 여부에 따라 성공하면 AuthenticationSuccessHandler, 실패하면 AuthenticationFailureHandler를 실행
Leave a comment