📱인프런 모바일 App 😆
스프링 시큐리티

스프링 시큐리티

(1개의 수강평)

53명의 수강생

88,000원

평생
중급, 활용
수료증
48개 수업, 총 8시간 4분
위시리스트 추가

대부분의 애플리케이션은 "인증"과 "인가" 없이 제대로 동작할 수 없습니다.
게시판을 만든다고 가정해 봅시다. 익명 게시판이 아닌 이상 여러분이 만든 게시판 애플리케이션은 현재 어떤 사용자가 글을 작성하고 있는지 알아야 합니다. 흔히 '로그인'이라고 부르고 스프링 시큐리티에서는 Authentication 또는 "인증"이라고 말하는 기능이 필요합니다. 또한 글을 수정하는 기능을 구현할 때, 그 글을 수정할 수 있는 사용자는 최소한 그 글을 작성한 사용자 또는 관리자 권한을 가지고 있어야 합니다. 이때 개발자로서 우리는 애플리케이션에 "인가", Authorization 또는 Access Contrl 기능을 적용하여 적절한 권한을 가진 사용자만 해당 글을 수정할 수 있도록 기능을 구현해야 합니다. 또한 웹 애플리케이션인 경우, CSRF, XXS, 세션 변조, Clickjacking 등 다양한 웹 보안 관련 이슈에 대응하는 것도 반드시 필요합니다.

이 강좌는 폼 기반의 웹 애플리케이션에 스프링 시큐리티가 제공하는 다양한 기능을 적용하며 스프링 시큐리티 구조를 파악합니다. 단순히 이런 저런 기능을 적용해 보는 것에 그치지 않고 스프링 시큐리티가 서블릿 기반 웹 애플리케이션에 어떻게 맞물려 동작하는지 그 내부 구조를 학습합니다. 따라서, AuthenticationManager, AccessDecisionManager, FilterChainProxy 등 스프링 시큐리티 내부 구조를 학습하는데 많은 도움이 될 것으로 기대합니다.

이 강좌는 타임리프(Thymeleaf)를 뷰 템플릿으로 사용하는 서블릿 기반 애플리케이션을 주로 다룹니다. ACL, OAuth2, Reactive(WebFlux) 그리고 웹소켓을 지원하는 기능에 대해서는 다루지 않았으며 메소드 시큐리티에 대해서는 간략하게 살펴봤습니다. 이번 강좌의 초점을 보다 대중적인 애플리케이션 형태에 집중하려는 선택이었습니다. 하지만, 이 강좌를 충분히 학습하신다면 그 지식을 기반으로 여기서 다루지 않은 기능도 손쉽게 익힐 수 있을 겁니다.

견지망월(見指忘月)이라는 옛말이 있습니다. 물론 손가락도 봐야 하지만 여러분 달도 꼭 보시기 바랍니다. 지금까지 만든 또 앞으로도 만들 제 모든 강좌를 보면서 여러분은 제가 무언가를 학습하는 방법. 그 방법을 익힐 수 있습니다. 저는 항상 테스트를 중요하게 생각하지만 그렇다고 TDD에 집착하지는 않습니다. (가끔 그렇게 보인다는 피드백을 받기도 했지만..) 모든 기능은 직접 코딩하여 검증하며, 이해가 되지 않는 부분 또는 더 자세히 보고 싶은 부분은 디버거를 활용합니다. 여러분은 이 강좌에서도 어김없이 스프링 시큐리티를 적용했을 때 테스트 코드를 작성하는 방법과 디버거를 사용하여 분석하는 방법을 익힐 수 있습니다.

어떤 IDE를 사용하는지는 중요하지 않습니다만 여러분에게 익숙한 IDE를 사용하시기 바랍니다. 이 강좌에서는 IntelliJ IDEA(인텔리J) 유료 버전을 사용합니다. 인텔리J 무료 버전을 사용해도 강좌를 따라 코딩하는 데는 크게 지장은 없지만 일부 과정이 여러분 보다 훨씬 편리해 보일 수는 있습니다. 스프링에서 무료로 제공하는 이클립스 기반의 STS(스프링 툴 스윗)을 사용한다면 비슷한 수준의 편리함을 누릴 수 있을 겁니다.

이 강좌는 수강하시는 분들이 다음과 같은 선수 지식을 갖췄다는 가정하게 만들었습니다. 아직 수강하지 않은 강좌 또는 학습하지 않은 주제가 있다면 꼭 미리 학습하신 뒤에 이번 강좌를 수강하시기 바랍니다.

참고 자료

 

배우면 할 수 있는 것들

  • 웹 애플리케이션에 인증 및 인가 기능을 추가할 수 있습니다.
  • 스프링 시큐리티 아키텍처를 이해할 수 있습니다.
  • 스프링 시큐리티 적용시 테스트를 작성하는 방법을 학습할 수 있습니다.

수강 대상

  • 웹 애플리케이션에 폼 기반의 인증 및 인가 기능을 구현하고 싶은 학생 또는 개발자
  • 스프링 시큐리티 아키텍처를 이해하고 싶은 학생 또는 개발자

선수 지식

  • 스프링 웹 MVC
  • 스프링 부트
  • 스프링 프레임워크 핵심 기술
  • 스프링 데이터 JPA (optional)

지식공유자 소개

백기선

교육과정

스프링 시큐리티: 폼 인증
강좌 자료
폼 인증 예제 살펴보기
08 : 50
스프링 웹 프로젝트 만들기
13 : 39
스프링 시큐리티 연동
07 : 42
스프링 시큐리티 설정하기
08 : 06
스프링 시큐리티 커스터마이징: 인메모리 유저 추가
10 : 10
스프링 시큐리티 커스터마이징: JPA 연동
21 : 35
스프링 시큐리티 커스터마이징: PasswordEncoder
06 : 30
스프링 시큐리티 테스트 1부
15 : 04
스프링 시큐리티 테스트 2부
20 : 01
스프링 시큐리티: 아키텍처
SecurityContextHolder와 Authentication
18 : 22
AuthenticationManager와 Authentication
13 : 39
ThreadLocal
08 : 15
Authentication과 SecurityContextHodler
19 : 44
스프링 시큐리티 필터와 FilterChainProxy
16 : 11
DelegatingFilterProxy와 FilterChainProxy
09 : 19
AccessDecisionManager 1부
08 : 09
AccessDecisionManager 2부
12 : 59
FilterSecurityInterceptor
09 : 12
ExceptionTranslationFilter
08 : 33
스프링 시큐리티 아키텍처 정리
07 : 47
웹 애플리케이션 시큐리티
스프링 시큐리티 ignoring() 1부
11 : 09
스프링 시큐리티 ignoring() 2부
06 : 09
Async 웹 MVC를 지원하는 필터: WebAsyncManagerIntegrationFilter
09 : 54
스프링 시큐리티와 @Async
09 : 12
SecurityContext 영속화 필터: SecurityContextPersistenceFilter
05 : 16
시큐리티 관련 헤더 추가하는 필터: HeaderWriterFilter
07 : 02
CSRF 어택 방지 필터: CsrfFilter
14 : 13
CSRF 토큰 사용 예제
17 : 27
로그아웃 처리 필터: LogoutFilter
10 : 04
폼 인증 처리 필터: UsernamePasswordAuthenticationFilter
07 : 12
로그인/로그아웃 폼 페이지 생성해주는 필터: DefaultLogin/LogoutPageGeneratingFilter
04 : 09
로그인/로그아웃 폼 커스터마이징
14 : 31
Basic 인증 처리 필터: BasicAuthenticationFilter
08 : 37
요청 캐시 필터: RequestCacheAwareFilter
03 : 16
시큐리티 관련 서블릿 스팩 구현 필터: SecurityContextHolderAwareRequestFilter
02 : 27
익명 인증 필터: AnonymousAuthenticationFilter
04 : 35
세션 관리 필터: SessionManagementFilter
16 : 07
인증/인가 예외 처리 필터: ExceptionTranslationFilter
12 : 30
인가 처리 필터: FilterSecurityInterceptor
07 : 09
토큰 기반 인증 필터 : RememberMeAuthenticationFilter
09 : 42
커스텀 필터 추가하기
06 : 13
스프링 시큐리티 그밖에
타임리프 스프링 시큐리티 확장팩
07 : 17
sec 네임스페이스
04 : 42
메소드 시큐리티
17 : 17
@AuthenticationPrincipal
11 : 26
스프링 데이터 연동
11 : 02
스프링 시큐리티 마무리
01 : 51

수강 후기

5.0
1개의 수강평
두램 3일 전
제대로 이해하지 못하고 사용만 하던 시큐리티의 이해에 많은 도움이 되었습니다. 백기선님의 여러 강좌를 수강하였는데, 개인적으로는 이번 시큐리티 강의가 만족도가 높네요. 감사합니다~~