BEST
개발 · 프로그래밍

/

백엔드

스프링 시큐리티 완전 정복 [6.x 개정판]

스프링 시큐리티 6.x 최신 버전으로 제작된 개정판 강의로 초급에서 중.고급에 이르기까지 스프링 시큐리티의 기본 개념부터 API 사용법과 내부 아키텍처를 학습하게 되고 이를 바탕으로 실전 프로젝트를 완성해 나감으로써 스프링 시큐리티의 인증과 인가와 관련된 핵심적인 기술들을 익히게 됩니다.

(4.8) 수강평 38개

수강생 1,551명

Thumbnail

초급자를 위해 준비한
[백엔드, 웹 개발] 강의입니다.

이런 걸
배워요!

  • 스프링 시큐리티의 기본 API 와 관련 Filter 완전 정복

  • 스프링 시큐리티의 내부 아키텍처와 객체들간의 역할 및 관계흐름들 이해

  • 스프링 시큐리티의 인증원리와 내부 동작방식 이해

  • 스프링 시큐리티의 인가원리와 내부 동작방식 이해

  • 스프링 시큐리티와 스프링 MVC 를 연계하는 방식 이해

  • 스프링 시큐리티를 활용해 실무적 수준의 보안 시스템 구축 노하우 학습

스프링 시큐리티 6.x 최신 버전 완전 개정판!!

스프링 시큐리티 6.x 는 이전 버전들과 비교했을 때 상당한 변화와 개선을 보여주고 있으며, 이번 강좌는 바로 그 변화된 부분과 새롭게 추가된 기능에 초점을 맞추고 있습니다.

이에 따라 커리큘럼 항목도 기존 스프링 시큐리티 강좌 대비 변경되거나 새롭게 추가된 항목이 많아졌습니다.특히 스프링 시큐리티의 인가 영역은 이전 버전과 비교했을 때 전체 뼈대가 바뀌었을 정도로 큰 변화가 있었습니다.
그래서 이번 스프링 시큐리티 완전정복 강좌는 스프링 시큐리티 6.x 버전의 주요 변경 사항과 새로운 기능들을 상세히 분석하고 파헤침으로써 수강생 여러분들이 본 강좌의 이론과 실습을 통해 각 기능과 API 를 확실하게 익힌다면 기존 버전에서의 개발 경험이 있는 분들은 물론, 스프링 시큐리티를 처음 접하는 분들 모두 실무 환경에서 스프링 시큐리티를 활용한 어플리케이션을 개발하는데 큰 도움이 될 것입니다


입문자, 초·중·고급자 모두를 위한 강의

본 강좌는 스프링 시큐리티를 처음 접하는 입문자부터 기초적인 지식이나 사용 경험은 있지만 좀 더 깊이 있는 지식 습득과 스프링 시큐리티의 핵심 원리, 내부 구조, 동작 방식 등을 심도 있게 이해하고 이를 응용하고자 하는 중·고급자를 위해 제작하였습니다.

주요 학습 내용 💡

본 강의는 스프링 시큐리티를 위한 핵심 주제로 크게 인증, 인가, 악용보호, 통합, 실전프로젝트 의 다섯 가지 축을 중심으로 수업을 진행합니다.

1. 인증 (Authentication)

스프링 시큐리티 6.x는 사용자 인증을 위해 폼 기반 인증, 기본 인증, 기억하기 인증 등 다양한 방법을 제공합니다. 이러한 인증 방식은 사용자가 시스템에 자신의 신원을 증명할 수 있는 효과적인 수단을 마련해 줍니다. 인증 과정은 사용자가 제공한 자격 증명을 검증하여 사용자의 신원을 확인하는 것으로, 이는 AuthenticationManager를 중심으로 이루어집니다. 성공적인 인증 후, 사용자의 인증 정보는 SecurityContextHolder 내의 SecurityContext에 저장되며, 이는 애플리케이션 전반에서 사용자의 인증 상태를 참조하는 데 사용됩니다. 스프링 시큐리티는 또한 세션 관리를 통해 사용자의 세션 정보를 관리하며, 동시 세션 제어, 세션 정책 설정, 세션 만료 및 세션 고정 보호 등의 기능을 제공하여 사용자의 세션을 안전하게 보호합니다. 인증 과정에서 발생할 수 있는 다양한 예외 상황들도 적절히 처리할 수 있도록 설계되어 있습니다.


2. 인가 (Authorization)

스프링 시큐리티의 인가 과정은 사용자가 인증을 마친 후 특정 자원에 대한 접근 권한이 있는지를 결정합니다. 스프링 시큐리티 6.x에서는 HttpSecurity를 사용하여 URL 기반 또는 메소드 기반 인가 처리를 구성할 수 있으며, AuthorizationManager를 포함한 새로운 인가 아키텍처를 통해 보다 세밀하고 유연한 인가 정책을 구현할 수 있습니다. 이는 개발자가 애플리케이션의 보안 요구 사항에 맞게 접근 제어 정책을 정의할 수 있게 하며, 사용자의 요청에 대해 권한을 평가하여 자원 접근을 허용하거나 거부할 수 있습니다. 인가 처리는 애플리케이션의 보안을 강화하는 데 중요한 역할을 하며, 민감한 정보와 자원을 보호하는 데 핵심적입니다.

3. 악용보호 (Protection Against Exploits)

스프링 시큐리티 6.x는 애플리케이션을 다양한 보안 위협으로부터 보호하기 위해 CORS, CSRF 보호, 그리고 SameSite 쿠키 설정과 같은 기능을 제공합니다. 이러한 보안 기능은 애플리케이션을 크로스 사이트 스크립팅, 크로스 사이트 요청 위조 공격으로부터 보호하며, 사용자의 데이터와 세션을 안전하게 유지합니다. CORS 설정을 통해 개발자는 다른 도메인의 리소스에 안전하게 접근할 수 있도록 할 수 있으며, CSRF 보호 기능은 악의적인 웹사이트가 사용자를 대신하여 요청을 보내는 것을 방지합니다. SameSite 쿠키 속성을 설정함으로써, 브라우저가 쿠키를 전송하는 방식을 제어하여 추가적인 보안 계층을 제공합니다.

4. 통합 (Integrations)

스프링 시큐리티 6.x 버전은 서블릿 환경, 스프링 MVC, 그리고 스프링 MVC 비동기 처리와의 긴밀한 통합을 제공합니다. 이러한 통합을 통해, 개발자는 스프링 기반의 애플리케이션에 보안 기능을 손쉽게 추가하고 구성할 수 있습니다. 서블릿 통합을 통해 스프링 시큐리티는 HTTP 요청과 응답에 대한 보안 처리를 관리하며, 스프링 MVC 통합은 컨트롤러와 서비스 레이어에서의 세밀한 보안 정책을 가능하게 합니다. 비동기 처리와의 통합은 스프링 웹플럭스(Spring WebFlux)를 사용하는 반응형 프로그래밍 모델에서의 보안 요구사항을 충족시키며, 이는 개발자가 비동기 및 스트림 기반의 애플리케이션을 구축할 때 보안을 효과적으로 관리할 수 있도록 합니다. 이러한 통합 기능은 스프링 시큐리티를 다양한 스프링 애플리케이션 아키텍처와 원활하게 연동시키며, 보안 구현의 복잡성을 줄여줍니다.

5. 실전프로젝트 (Practical Projects)

스프링 시큐리티 6.x 버전은 실전 프로젝트에서의 회원 인증 시스템, 회원 관리 시스템 구현에 있어 핵심적인 역할을 합니다. 이를 통해 개발자는 사용자 인증, 권한 관리, 자원 접근 제어 등의 기능을 효과적으로 구현할 수 있습니다. 회원 인증 시스템은 애플리케이션의 보안을 강화하는 기반을 제공하며, 회원 관리 시스템은 사용자 정보의 안전한 저장, 조회, 수정, 삭제 등을 관리합니다. 권한 관리를 통해 사용자별로 다른 접근 권한을 할당하고, 자원 관리는 애플리케이션 내의 민감한 정보와 기능에 대한 접근을 제어합니다. 또한, 스프링 시큐리티는 Map 및 데이터베이스를 이용한 동적 인가 설정을 지원하여, 실행 시간에 권한을 변경하거나 업데이트할 수 있는 유연성을 제공합니다. 이러한 실전 프로젝트에서의 구현은 스프링 시큐리티의 강력한 기능과 유연성을 보여주며, 개발자가 보안 요구사항을 충족시키는 데 필수적인 도구입니다.

회원 인증 시스템

회원 관리 시스템

강의 구성 및 상세 커리큘럼 🏃

섹션 1. 초기화 과정 이해

  • 스프링 시큐리티가 기동하며서 발생하는 초기화 과정을 깊이 있게 다룹니다.

  • 스프링 시큐리티 초기화 시 설정되는 빈, 전체 구조와 흐름, 필터 체인 구성 등을 포함하여, 스프링 시큐리티가 어떻게 작동 준비를 하는지 세밀하게 설명합니다. 이 과정을 이해함으로써, 개발자는 스프링 시큐리티의 기본 작동 원리를 파악하고, 필요한 보안 설정을 효과적으로 적용할 수 있게 됩니다

섹션 2. 인증 프로세스

  • 다양한 사용자 인증 방식을 학습합니다

  • 폼 기반 인증, 기본 인증(Basic Authentication), "기억하기(remember-me)" 인증 등 다양한 인증 메커니즘을 상세히 소개하고, 어플리케이션의 요구사항에 가장 적합한 인증 방식을 선택하고 구현하는 방법을 배웁니다.

섹션 3. 인증 아키텍처

  • 이 섹션은 스프링 시큐리티의 인증 처리 구조와 원리에 초점을 맞춥니다.

  • 인증 과정에서의 객체 간 관계, 인증 매니저, 인증 프로바이더 등 핵심 컴포넌트의 역할과 상호 작용을 자세히 설명합니다. 이해를 돕기 위해 다양한 인증 플로우와 사용 사례를 통해 인증 아키텍처를 실제로 어떻게 적용할 수 있는지 보여줍니다

섹션 4. 인증 상태 영속성

  • 이 단원에서는 인증 상태의 저장, 참조 및 삭제와 같은 영속성 관리 방법을 다룹니다.

  • 이전 버전에 비해 더욱 효율성 있는 인증 상태의 영속성을 어떻게 설정하고 구현하는지 자세하게 학습합니다.

섹션 5. 세션 관리

  • 이 섹션에서는 세션 정보의 생성, 유지, 만료 및 삭제와 같은 세션 라이프사이클 관리를 포함하여, 동시 세션 제어, 세션 고정 보호, 세션 정책 설정 등을 상세히 설명합니다.

섹션 6. 예외 처리

  • 인증과 인가 과정에서 발생할 수 있는 다양한 예외 상황을 어떻게 처리할지에 대한 방법론을 제시합니다. 보안 관련 예외 처리의 중요성을 강조하며, 사용자에게 친절한 에러 메시지를 제공하고, 시스템의 보안을 유지하기 위한 예외 처리 전략을 학습합니다.

섹션 7. 악용 보호

  • 웹 애플리케이션은 다양한 보안 위협에 노출되어 있습니다. CORS(Cross-Origin Resource Sharing), CSRF(Cross-Site Request Forgery), SameSite 쿠키 속성 등의 보안 메커니즘을 통해 이러한 위협으로부터 어플리케이션을 보호하는 방법을 배웁니다.

섹션 8. 인가 프로세스

  • 인가는 애플리케이션 내에서 사용자가 수행할 수 있는 작업을 결정합니다.

  • URL 기반 인가, 메소드 수준 인가 등 다양한 인가 처리 방법을 소개하고, 각각의 적용 방법과 보안 고려사항을 설명합니다. 이를 통해 개발자는 애플리케이션의 보안 요구 사항에 맞는 적절한 인가 정책을 설계하고 구현할 수 있습니다

섹션 9. 인가 아키텍처

  • 인가 처리의 내부 구조와 원리를 깊이 있게 다룹니다.

  • 인가 매니저, 인가 결정자 등 핵심 컴포넌트와 이들 간의 관계를 분석하며, 인가 아키텍처를 통해 복잡한 보안 요구 사항을 해결하는 방법을 소개합니다.

.섹션 10. 이벤트 처리

  • 스프링 시큐리티는 인증과 인가 과정에서 발생하는 이벤트를 처리할 수 있는 메커니즘을 제공합니다.

  • 인증 이벤트, 인가 이벤트의 처리 방법을 배우며, 어떤 상황에서 이벤트를 발생시키고 수신하는지에 대한 방법들을 학습합니다.

섹션 11. 통합하기

  • 스프링 시큐리티는 스프링 에코시스템과 긴밀하게 통합됩니다.

  • 서블릿 API, 스프링 MVC와의 통합 방법을 상세히 설명하며, 스프링 애플리케이션에 스프링 시큐리티를 효과적으로 통합하는 방법을 다룹니다.

섹션 12: 고급 설정

  • 다중 보안 설정, 이중화 설정, 시큐리티 DSLs 를 어떻게 구현할 수 있는지에 대해 학습합니다.

섹션 13: 실전 프로젝트

  • 이 단원은 이론에서 실제로 넘어가, 회원 인증 시스템 및 회원 관리 시스템 구현을 통해 스프링 시큐리티의 전반적인 적용 방법을 학습합니다.

스프링 시큐리티 로드맵

  • 스프링 시큐리티 완정정복 + 스프링 시큐리티 OAuth2

이 강의를 만든 
지식공유자를 소개합니다.

정수원(leaven)

  • 현직 자바 개발자

  • SI/SM/솔루션/Mobile/Front&Back-end 의 다양한 프로젝트 경험

  • Architect/PM/PL 로서 역할 수행

  • Github


이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 스프링 시큐리티의 기본 개념을 확실하게 이해하고 싶은 분

  • 스프링 시큐리티의 기본 기능을 넘어 자유롭게 기능을 확장하고 커스트마이징 하고자 하는분

  • 스프링 시큐리티를 활용해 실무적 수준의 인증 및 권한 제어 시스템을 구현하고자 하는 분

  • 스프링 시큐리티 입문자부터 중고급자까지 활용할 수 있는 내용으로 구성

선수 지식,
필요할까요?

  • Java

  • Spring Boot

  • Spring MVC

  • Spring JPA

  • RDBMS

다양한 프로젝트에서 웹/모바일/솔루션 제품 개발과 관련된 업무를 진행해 오고 있으며 분석/설계/개발 Role 을 맡아 오고 있습니다.

공공기간, 교육프로그램, 기업 프로젝트, 쇼핑몰 등의 웹 개발 및 솔루션 프로그램, 프레임워크, 오픈소스 연동 등의 아키텍처 설계 및 구조적 고도화 개선 등을 해 오고 있으며 개발, PL 등의 역할을 맡았습니다.

다양한 Open Source 와 여러 기술적인 경험들을 통해 웹의 전반적인 기술 흐름들을 익혔으며 개발 경험이 거듭될 수록 요구사항의 기능 구현에만 거치지 않고 좀 더 OOP 적인 구조의 소프트웨어로서 안전성과 성능을 고려한 아키텍처링과 튜닝의 기술들을 접목시켜 지속적으로 더 훌륭한 소프트웨어를 완성하기 위한 연구와 개발 실무를 책임감 있게 맡아 오고 있습니다.

 

커리큘럼

전체

103개 ∙ (36시간 55분)

수업 자료

가 제공되는 강의입니다.

강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!