스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security
스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security
수강정보
(12개의 수강평)
153명의 수강생
3개월 할부시
월 29,333원88,000원
지식공유자 : 정수원
62회 수업 · 총 20시간 58분 수업
기간 : 평생 무제한 시청
수료증 : 발급 강의
수강 난이도 : 초급
정수원의 다른 강의 연관 로드맵
아직 다른 강의가 없어요
연관 로드맵이 없어요

이 강의는

스프링 시큐리티의 기본 개념부터 API 사용법과 내부 아키텍처를 학습하게 되고 이를 바탕으로 실전 프로젝트를 완성해 나감으로써 스프링 시큐리티의 인증과 인가와 관련된 핵심적인 기술들을 익히게 됩니다.

이런 걸 배울 수 있어요

  • 스프링 시큐리티의 기본 API 와 관련 Filter 완전 정복
  • 스프링 시큐리티의 내부 아키텍처와 객체들간의 역할 및 관계흐름들 이해
  • 스프링 시큐리티의 인증원리와 내부 동작방식 이해
  • 스프링 시큐리티의 인가원리와 내부 동작방식 이해
  • 스프링 시큐리티와 스프링 MVC 를 연계하는 방식 이해
  • 스프링 시큐리티를 활용해 실무적 수준의 보안 시스템 구축 노하우 학습

스프링 시큐리티의 가장 핵심적인 기술을 익히고, 응용합니다.

1. 코어 스프링 시큐리티 강좌 소개

스프링 시큐리티는 인증과 권한 제어 기능을 구현하는데 필요한 강력한 API를 제공하고 있습니다. 
기본적으로 제공하는 API만을 사용해도 아주 적은 비용으로 안전한 보안 시스템을 구현할 수 있습니다.

본 강좌는 스프링 시큐리티의 기본적인 사용법을 전혀 모르는 사용자부터 기초적인 지식 및 사용 경험은 있지만 좀더 깊이있는 지식 습득과 스프링 시큐리티의 핵심적인 원리, 내부구조, 동작방식 등을 심도있게 이해하고 이를 응용하고자 하는 분들을 위해 제작되었습니다.

본 강좌는 스프링 시큐리티의 핵심 개념인 인증과 인가의 두 축을 중심으로 강의가 진행됩니다.

[인증]
스프링 시큐리티는 Form, OAuth, JWT, LDAP 등 여러 인증 방식들을 지원해주고 있는데 본 강좌는 Form 인증 방식에 대해서 살펴봅니다.
다수의 웹 서비스들이 Form 인증 방식 기반으로 보안화를 구현하고 있어, 기본적으로 꼭 이해하고 있어야 하는 인증 방식이기 때문입니다.

[인가]
스프링 시큐리티는 웹 계층 권한, 서비스계층 권한, 도메인 계층 권한(ACL) 접근 제어 기능을 지원해 주고 있습니다. 
본 강좌는 웹 계층 권한과 서비스 계층 권한 접근 방식에 대해서 살펴봅니다.
특히 다섯 번째 섹션의 실전 프로젝트 인가 편에서는 실무적 수준에서의 동적인 권한제어가 가능하도록 DB와 연동하는 방식을 학습하게 됩니다.
웹 계층 뿐 아니라 비즈니스 계층의 권한제어를 DB로 연동하는 기술을 익힌다면 실제 운영 서비스에서도 활용도가 매우 높을 것으로 예상됩니다.

본 강좌는 다음과 같이 크게 4가지 파트로 나뉩니다.

  • 스프링 시큐리티 기본 API 사용법과 이와 관련된 Filter 이해
  • 스프링 시큐리티 내부 아키텍처와 동작 방식 이해
  • 실전 프로젝트를 통한 스프링 시큐리티 인증 프로세스 구현
  • 실전 프로젝트를 통한 스프링 시큐리티 인가 프로세스 구현 - DB 연동을 통해 권한 제어 시스템 구현

2. 심도 있는 내부 아키텍처 및 동작원리 파헤치기

스프링 시큐리티의 기본 API를 사용해서 인증과 인가 기능을 구현할 수 있지만 시스템의 규모가 커지고 보안과 관련한 요구사항이 많아지면 기본적으로 제공하는 API만으로는 구현하고자 하는 보안 기능을 충족하기가 어려워지게 됩니다.

스프링 시큐리티의 기능을 자유롭게 확장하고 요구사항에 맞게끔 다양하고 세세하게 커스트마이징 할 수 있기 위해서는 스프링 시큐리티의 내부 아키텍처를 깊이 이해하고 인증과 인가 처리가 어떻게 이루어지고 있는지의 전체적인 동작원리와 그에 따른 흐름들을 반드시 이해하여야 합니다.

또한 Spring MVC와 연계해서 보안 시스템을 구축할 경우 예기치 않게 발생하는 여러가지 보안 오류에 대해 정확한 원인과 그에 대한 해결책을 알기 위해서도 꼭 필요한 내용입니다. 

본 강좌를 학습하게 되면 이러한 지식들을 습득하고 실무에 활용할 수 있게 됩니다.

3. DB 연동 권한 제어 시스템 구현

스프링 시큐리티에서 제공하는 인가 방식은 두 가지로 나눌 수 있습니다.

첫번째는 클라이언트의 요청에 대해서 설정파일에 직접 권한정보를 명시하는 선언적 방식이고 두번째는 외부 저장소와 연동하여 맵 기반으로 권한 정보를 관리하는 동적인 방식으로 나눌 수 있습니다.

첫번째 방식은 시스템의 규모가 커질 수록 권한의 종류와 구성이 복잡해지게 되는데 이때 설정 파일로 일일히 인가 정책을 관리한다는 것은 매우 비효율적이며 유지보수 차원에서도 비용이 많이 들게 됩니다.

스프링 시큐리티에서는 이러한 부분들을 보완하기 위해 설정파일에 직접 인가정책을 관리하지 않고 메모리나 DB 와 같은 외부 저장소에 인가 정책을 관리할 수 있도록 지원하고 있습니다.

본 강좌는 설정 파일에 명시하는 선언적 방식과 DB와의 연동을 통한 동적인 방식 두가지 모두에 대해서 살펴 볼 것이며 특히 웹 계층의 URL 방식 권한 제어 뿐 아니라 비즈니스 계층의 Method와 Pointcut 방식의 권한제어에 대해서도 살펴봅니다.

이로써 서비스 운영시에도 서버 기동 없이 실시간적 동적 권한 제어 시스템을 구현할 수 있는 방법을 학습하게 됩니다.

4. 실전 프로젝트 완성

본 강좌의 첫번째 섹션과 두번째 섹션을 학습한 이후 이를 바탕으로 세 번째 섹션부터 여섯 번째 섹션까지는 실전 프로젝트를 직접 완성해 가면서 스프링 시큐리티의 기능을 이해하는 방식으로 진행합니다.

[사용자]
대시보드, 사용자, 매니저, 환경설정과 같은 화면으로 이루어져 있으며 각 메뉴마다 인증 및 인가 정책을 설정하고 테스트 합니다.
회원등록 및 로그인 페이지를 통해 인증 준비 및 처리가 이루어집니다.

[관리자]
사용자 관리, 권한 관리, 리소스 관리와 같은 화면을 제공하며 관리자 권한을 가진 사용자만 접근이 가능합니다.
실시간적으로 각 기능의 CRUD 처리를 통해 권한과 자원에 대한 동적 관리가 가능하도록 구성합니다
DB 연동으로 사용자의 권한을 설정함으로써 사용자화면에서 즉시 결과를 확인할 수 있게 됩니다.

실전 프로젝트에서는 Spring Boot, Spring MVC, Spring JPA 등과 같은 기술을 연계해서 진행하게 됩니다. 
이 강좌를 듣기 전에 미리 학습하길 권장해 드리고 강좌를 수강하시면서 스프링 연계 기술들을 병행해서 학습하시면 됩니다.
중요한 것은 스프링 시큐리티의 핵심 기능을 이해하는 것이기 때문에 위의 연계 기술은 차차 이해해도 크게 문제되지는 않습니다.

5. 지식공유자 소개

정수원(leaven)

  • 현직 20년차 자바 개발자
  • SI/SM/솔루션/Mobile/Front&Back-end 의 다양한 프로젝트 경험
  • Architect/PM/PL 로서 역할 수행
  • Github

도움 되는 분들

  • 스프링 시큐리티의 기본 개념을 확실하게 이해하고 싶은 분
  • 스프링 시큐리티의 기본 기능을 넘어 자유롭게 기능을 확장하고 커스트마이징 하고자 하는분
  • 스프링 시큐리티를 활용해 실무적 수준의 인증 및 권한 제어 시스템을 구현하고자 하는 분
  • 스프링 시큐리티 입문자부터 중고급자까지 활용할 수 있는 내용으로 구성

선수 지식

  • Java
  • Spring Boot
  • Spring MVC
  • Spring JPA

교육과정

모두 펼치기 62 강의 20시간 58분
섹션 1. 스프링 시큐리티 기본 API 및 Filter 이해
13 강의 258 : 37
1) 프로젝트 구성 및 의존성 추가
11 : 39
2) 사용자 정의 보안 기능 구현
16 : 46
3) Form Login 인증
18 : 01
4) Form Login 인증 필터 : UsernamePasswordAuthenticationFilter
19 : 19
5) Logout 처리, LogoutFilter
13 : 33
6) Remember Me 인증
14 : 00
7) Remember Me 인증 필터 : RememberMeAuthenticationFilter
15 : 30
8) 익명사용자 인증 필터 : AnonymousAuthenticationFilter
12 : 41
9) 동시 세션 제어, 세션 고정 보호, 세션 정책
27 : 24
10) 세션 제어 필터 : SessionManagementFilter, ConcurrentSessionFilter
28 : 03
11) 권한설정과 표현식
31 : 34
12) 예외 처리 및 요청 캐시 필터 : ExceptionTranslationFilter, RequestCacheAwareFilter
33 : 55
13) 사이트 간 요청 위조 - CSRF, CsrfFilter
16 : 12
섹션 2. 스프링 시큐리티 주요 아키텍처 이해
11 강의 253 : 28
1) 위임 필터 및 필터 빈 초기화 - DelegatingProxyChain, FilterChainProxy
24 : 08
2) 필터 초기화와 다중 보안 설정
23 : 59
3) 인증 개념 이해 - Authentication
19 : 17
4) 인증 저장소 - SecurityContextHolder, SecurityContext
26 : 01
5) 인증 저장소 필터 - SecurityContextPersistenceFilter
27 : 00
6) 인증 흐름 이해 - Authentication Flow
20 : 43
7) 인증 관리자 : AuthenticationManager
18 : 03
8) 인증 처리자 - AuthenticationProvider
15 : 34
9) 인가 개념 및 필터 이해 : Authorization, FilterSecurityInterceptor
27 : 20
10) 인가 결정 심의자 - AccessDecisionManager, AccessDecisionVoter
17 : 34
11) 스프링 시큐리티 필터 및 아키텍처 정리
33 : 49
섹션 3. 실전프로젝트 -인증 프로세스 Form 인증 구현
11 강의 170 : 48
1) 실전 프로젝트 생성
19 : 28
2) 정적 자원 관리 - WebIgnore 설정
13 : 07
3) 사용자 DB 등록 및 PasswordEncoder
23 : 10
4) DB 연동 인증 처리(1) : CustomUserDetailsService
15 : 19
5) DB 연동 인증 처리(2) : CustomAuthenticationProvider
19 : 05
6) 커스텀 로그인 페이지 생성하기
05 : 09
7) 로그아웃 및 인증에 따른 화면 보안 처리
09 : 21
8) 인증 부가 기능 - WebAuthenticationDetails, AuthenticationDetailsSource
18 : 47
9) 인증 성공 핸들러 : CustomAuthenticationSuccessHandler
13 : 44
10) 인증 실패 핸들러 : CustomAuthenticationFailureHandler
16 : 37
11) 인증 거부 처리 - Access Denied
17 : 01
섹션 4. 실전프로젝트 - 인증 프로세스 Ajax 인증 구현
7 강의 129 : 04
1) 흐름 및 개요
06 : 31
2) 인증 필터 - AjaxAuthenticationFilter
28 : 14
3) 인증 처리자 - AjaxAuthenticationProvider
18 : 25
4) 인증 핸들러 - AjaxAuthenticationSuccessHandler, AjaxAuthenticationFailureHandler
17 : 33
5) 인증 및 인가 예외 처리 - AjaxLoginUrlAuthenticationEntryPoint, AjaxAccessDeniedHandler
19 : 39
6) Ajax Custom DSLs 구현하기
18 : 24
7) Ajax 로그인 구현 & CSRF 설정
20 : 18
섹션 5. 실전프로젝트 - 인가 프로세스 DB 연동 웹 계층 구현
9 강의 186 : 28
1) 스프링 시큐리티 인가 개요
05 : 21
2) 관리자 시스템 - 권한 도메인, 서비스, 리포지토리 구성
14 : 22
3) 웹 기반 인가처리 DB 연동 - 주요 아키텍처 이해
23 : 36
4) 웹 기반 인가처리 DB 연동 - FilterInvocationSecurityMetadataSource (1)
32 : 18
5) 웹 기반 인가처리 DB 연동 - FilterInvocationSecurityMetadataSource (2)
33 : 59
6) 웹 기반 인가처리 실시간 반영하기
10 : 59
7) 인가처리 허용 필터 - PermitAllFilter 구현
19 : 10
8) 계층 권한 적용하기- RoleHierarchy
19 : 01
9) 아이피 접속 제한하기 - CustomIpAddressVoter
27 : 42
섹션 6. 실전프로젝트 - 인가 프로세스 DB 연동 서비스 계층 구현
7 강의 181 : 34
1) Method 방식 개요
06 : 03
3) 어노테이션 권한 설정 - @PreAuthorize, @PostAuthorize, @Secured, @RolesAllowed
26 : 01
2) AOP Method 기반 DB 연동 - 주요 아키텍처 이해
43 : 02
4) AOP Method 기반 DB 연동 - MapBasedSecurityMetadataSource (1)
16 : 56
5) AOP Method 기반 DB 연동 - MapBasedSecurityMetadataSource (2)
14 : 49
6) AOP Method 기반 DB 연동 - MapBasedSecurityMetadataSource (3)
38 : 43
7) AOP Method 기반 DB 연동 - ProtectPointcutPostProcessor
36 : 00
섹션 7. 번 외편 - 메소드 보안 실시간 DB 연동 구현
1 강의 33 : 29
ProxyFactory 를 활용한 실시간 메소드 보안 구현
33 : 29
섹션 8. 강좌 마무리
1 강의 10 : 51
정리
10 : 51

공개 일자

2020년 3월 17일 (마지막 업데이트 일자 : 2020년 4월 18일)

수강 후기

4.8
12개의 수강평
default_profile.png
로시츠키 3달 전
아직 api와 아키텍쳐 부분밖에 보지못했지만 너무 좋은 강좌입니다 jsp,스프링을 공부하면서 보안이나 권한을 좀더 자세히 다루고 싶어서 인터넷을 뒤져봐도 제가 워낙 초보수준인지라 ㅋㅋ 가장 좋은점은 강의가 너무 친절합니다 제공해주시는 자료에서도 정성이 느껴지고 저같은 초보도 이해할수 있을 정도로 계속해서 개념을 반복 설명해주십니다 처음에는 개념이 많아서 너무 어렵고 디버깅해주시는것도 이해가 안갔는데 필기 열심히 하고 따라 하기만 해도 이제 전체적인 흐름이 보이기 시작합니다 좋은 강의 만들어주셔서 감사합니다
정수원

정수원 3달 전
부족한 강의인데도 도움이 되셨다니 정말 감사드립니다^^ 강의를 들으시면서 궁금하신 점 있으시면 언제든 질문해 주시면 최대한 해결책을 드릴 수 있도록 노력하겠습니다. 강의가 조금 길어서 완주하시기가 쉽지 않으시겠지만 끝까지 들으시면 노력한 만큼의 보상이 뒤따를 것이라 생각합니다. 좋은 평가 해 주셔서 다시 한번 감사드립니다.

default_profile.png
kmsu90 1달 전
정리 잘해주셨고 예제와 이론 모두큰 도이 된것 같습니다. 감사합니다.
정수원

정수원 1달 전
네 감사합니다 긴 시간 강의를 완주하시기 쉽지 않으셨을텐데 비교적 짧은 시간에 강의를 다 들으시고 수강평까지 남겨 주셔서 감사드립니다 아무쪼록 학습을 통해 익히신 내용을 가지고 여러 곳에 잘 사용하셔서 결과물에 도움이 되어지길 바라겠습니다 수고 많으셨습니다^^

default_profile.png
이한솔 13일 전
ppt도 분량이 엄청나고 강의량도 엄청납니다. API를 하나하나 메서드단위로 뜯어서 설명해주시는데, 단순히 사용법을 익히는게아니라 스프링 시큐리티가 무엇이고 어떻게 돌아가고 왜 이렇게하는지까지 파악하는데 많은 도움이 된 강의입니다. Git에가서 소스를 받아볼수도 있습니다. 아쉬운점은 강의 스텝별로 코드작성을 따라하고싶어도, git은 완성본만있고 강의에서는 해당 강의에서 구현하는 기능들을 다 상세히보여주거나 하는게 아니고 Git도 강의내용과 다르게 좀 더 리팩토링 및 최신화 되있는 코드들이 꽤 있어서 헷갈리거나 알아서 적당히 맞춰야 하는게 생각보다 피곤합니다. 그런부분들을 제외하면 만족하고 2회차로 한 번 더 강의 들으며 숙련도를 높힐 예정입니다.
정수원

정수원 13일 전
네 감사합니다. 강의시간이나 자료들을 제작하고 구성할 때 처음 계획했던 것보다 거의 두배로 늘어났습니다. 양이 많다고 무조건 좋은 건 아니겠지만 이 강의를 통해서 전달하고자 한 내용들을 담고자 노력하다 보니 강의시간이나 구성내용들이 계속 추가되었습니다. 단순히 API 사용법을 익히는 것을 뛰어넘어 원리를 이해하고 응용력을 키울 수 있는 방법들을 제시하고자 했습니다. 되도록 학습자들이 강의를 보면서 실제 코딩을 따라 하면서 학습하도록 진행하였는데 각 단원마다 소스를 구분해서 제공하지 못한 점이 저도 아쉽네요 다음 강의를 제작하게 되면 꼭 참고해서 반영하도록 하겠습니다. 긴 시간동안 힘든 과정을 완주하시느라 수고 많으셨고 아무쪼록 이 강의가 조금이나마 이한솔 님의 현장과 실무에 도움이 될 수 있기를 저도 응원하도록 하겠습니다. 도움되는 평 남겨주셔서 정말 감사합니다

지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스