인프런 영문 브랜드 로고
인프런 영문 브랜드 로고
BEST

스프링 시큐리티

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

Thumbnail

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

이런 걸 배울 수 있어요

  • 스프링 시큐리티의 기본 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)

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

이런 분들께
추천드려요!

학습 대상은
누구일까요?

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

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

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

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

선수 지식,
필요할까요?

  • Java

  • Spring Boot

  • Spring MVC

  • Spring JPA

안녕하세요
정수원입니다.

9,471

수강생

285

수강평

1,200

답변

4.9

강의 평점

5

강의

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

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

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

 

더보기

커리큘럼

전체

64개 ∙ (20시간 58분)

해당 강의에서 제공:

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

수강평

전체

227개

4.7

227개의 수강평

  • skygomu3801님의 프로필 이미지
    skygomu3801

    수강평 1

    평균 평점 5.0

    5

    75% 수강 후 작성

    I have only seen the API and architecture part, but it is a very good lecture. While studying JSP and Spring, I wanted to cover security and authorization in more detail. I searched the Internet, but I am still a beginner. Haha. The best part is that the lecture is very friendly. I can feel the sincerity in the materials provided, and the concepts are repeatedly explained so that even a beginner like me can understand. At first, there were so many concepts that it was too difficult, and I did not understand the debugging. But if you take notes diligently and follow along, you will now be able to see the overall flow. Thank you for making a good lecture.

    • leaven
      지식공유자

      I really appreciate that you found the lecture helpful even though it was lacking^^ If you have any questions while listening to the lecture, please feel free to ask and I will do my best to provide a solution. The lecture is a bit long, so it may not be easy to finish it, but I think that if you listen to the end, you will be rewarded for your efforts. Thank you again for your good evaluation.

  • semineun8975님의 프로필 이미지
    semineun8975

    수강평 4

    평균 평점 5.0

    5

    59% 수강 후 작성

    I am a 4th year computer science student. In the case of Spring Security, if you search on Google, you will find a lot of information, and it is also a good idea to refer to the official reference on spring.io. However, in the case of security, the process of reorganizing scattered information is very difficult. Even if you search on Google without knowing anything, it only tells you how to set up SecurityConfig, and it does not explain in detail why it is used, so if you apply it to a personal project, you will encounter numerous errors. In my subjective opinion, if you do not know anything about security, I am sure that purchasing this lecture is much cheaper than the cost of searching and finding it yourself. If you are taking the lecture, it seems better to skip Chapters 1 and 2 at first and go straight to the practical training. If you are doing the practical training and you get stuck for some reason, you can understand it better and internalize it faster by looking at the detailed API explanation in Chapters 1 and 2. For example, when I only heard about Authentication Flow in theory, it was quite difficult, but when I applied it to my project in Chapter 3 of the practical training and listened to it again, the flow chart caught my eye right away. The PPT is also well organized by each step, so it is a material that I can carry with me for the rest of my life. I unconditionally recommend it to those who, like me, have simply sent password values directly to the DB without encryption in past projects, or made it so that all members who sign up can delete posts written by others, or simply made projects as a patchwork.

    • leaven
      지식공유자

      Thank you so much for your valuable and thoughtful review. When I first encountered Spring Security, I remember that there were not many reference materials available at the time, so it was really difficult to build a secure environment using Spring Security. Now, there are many more materials than before, but it is also true that it is not easy to find practical sources or content and develop them into meaningful functions. As you said, it is good to take the lectures in order, but I think it is also a good idea to take the lectures according to your level and understanding. With Faust's passion and determination, I am confident that you will be able to acquire much more knowledge than this lecture. This lecture took a lot of time to produce, so I know it will be difficult, but I hope you will complete it and achieve the purpose of this lecture. Once again, I sincerely thank you for leaving a valuable review.

  • sorayeon님의 프로필 이미지
    sorayeon

    수강평 81

    평균 평점 5.0

    5

    97% 수강 후 작성

    I've been so absorbed in the lecture that I haven't been able to get out for weeks. The materials you provide are amazing, and I can feel the depth of knowledge you share just by looking at the answers you give on the Q&A board. I think I should listen to it again quickly after finishing the lecture. I'm glad I found this gem of a lecture. I'm looking forward to the next lecture. Thank you for making such a great lecture. ^___^

    • leaven
      지식공유자

      Even though it is a lecture that is lacking, I feel even more burdened because you praised me so much. Thank you for your valuable evaluation. It seems that you have a great passion for learning and studying since you listened to a lot of lectures in a short period of time. I have no doubt that you will be given a greater reward. Fighting until the end.^^

  • naelina님의 프로필 이미지
    naelina

    수강평 1

    평균 평점 5.0

    5

    91% 수강 후 작성

    I dare say that this is a truly rare Spring Security course, both domestically and internationally. I am listening to all three lectures by instructor Jeong Su-won, and I am amazed by the unique teaching pattern of instructor Jeong Su-won, such as the lecture content, preparation of materials, digging into the internal structure through debugging, and analyzing the entire architecture. Wow, digging into security like this... I think developers who have developed security will also be amazed by this lecture. As you know, Spring Security has a large learning curve, so it is not easy for intermediate developers to deeply understand the internal structure and flow, but this lecture provides sufficient technical foundation knowledge for beginners to intermediate developers and above. It explains in detail and easily so that difficult security does not feel like being possessed by magic, by combining appropriate theories and appropriate practices. In particular, the part where the structure and flow of Spring Security are explained in detail through well-prepared PPT diagrams and diagrams, and this is proven through debugging with code, is the highlight of this lecture and seems to be the instructor's know-how. I am also learning one by one by keeping an eye on this method of progress. Before taking this lecture, I only knew how to follow security, but after taking this lecture, I was able to acquire the ability to freely expand and customize functions according to the situation as well as the basic functions of security such as API, filter structure, authentication/authorization internal flow, and dynamic authorization control method. I would like to evaluate this lecture as an incredible level. I think it provides quality and information that can be counted among the lectures on Inferun. In fact, since security lectures are not a technology that anyone can teach if they want to, I think this lecture is even more valuable. After listening to it all, I realized how difficult and hard it would have been if I had tried to acquire this much knowledge on my own. When I search for security on Google, I see that the instructor's lecture contents are searched a lot, so I am really grateful that you have lowered the barrier to entry by spreading the high barrier to entry security knowledge to many developers. There was a problem where the explanation content and the provided GitHub source were not partially synchronized during the lecture, but fortunately, the instructor organized the branch names of the sources that were mapped to the lecture in Excel, so it was much easier to follow. There were some differences between the lecture content and the actual practice, but there was no difficulty in understanding the overall content. Still, I hope that you will look into these small parts more carefully in the next lecture. Now, I am looking forward to and anticipating Instructor Jeong Su-won's next lecture. Through knowledge sharing by developers like you, our junior developers will experience minimal trial and error. I will sincerely support the instructor's knowledge sharing activities in the future. Thank you.

    • leaven
      지식공유자

      Thank you for your great evaluation. This lecture was created after much thought and research from the perspective of the students, but there are many shortcomings. I will always prepare with a humble mind, communicate, and strive to make this a lecture where we can grow together. I also support Naelina's growth. Thank you.

  • catsbi님의 프로필 이미지
    catsbi

    수강평 14

    평균 평점 4.7

    4

    100% 수강 후 작성

    The PPT is also very long and the lecture volume is also very high. The API is explained one by one by method, It is a lecture that helps a lot in understanding what Spring Security is, how it works, and why it is done this way, not just learning how to use it. You can also go to Git and get the source code. The disappointing thing is that even if you want to follow the code writing for each lecture step, Git only has the finished version, and the lecture does not show you all the functions implemented in the lecture in detail, and Git also has quite a few refactored and updated codes that are different from the lecture content, so it is confusing or you have to adjust it yourself, which is more tiring than you think. Except for those parts, I am satisfied and plan to take the lecture again for the second time to improve my skills.

    • leaven
      지식공유자

      Yes, thank you. The lecture time and materials were almost doubled compared to what was initially planned. A larger quantity is not necessarily a good thing, but as I tried to include the contents I wanted to convey through this lecture, the lecture time and contents continued to be added. I wanted to go beyond simply learning how to use the API and suggest ways to understand the principles and develop application skills. I tried to have the students learn while watching the lecture and following the actual coding, but I regret that I could not provide the source code for each unit separately. I will definitely refer to it and reflect it when I produce the next lecture. Thank you for your hard work in completing the difficult course for a long time, and I hope that this lecture will be of some help to Mr. Lee Han-sol in the field and practice. Thank you so much for leaving a helpful comment.

정수원님의 다른 강의

지식공유자님의 다른 강의를 만나보세요!

비슷한 강의

같은 분야의 다른 강의를 만나보세요!

연관 로드맵

강의가 포함된 로드맵으로 학습해 보세요!

공개하지 않는 강의로 수강이 제한됩니다.