Thumbnail
BEST
개발 · 프로그래밍 백엔드

스프링 시큐리티 OAuth2 대시보드

(4.8)
37개의 수강평 ∙  1,745명의 수강생
121,000원

월 24,200원

5개월 할부 시
지식공유자: 정수원
총 109개 수업 (44시간 31분)
수강기한: 
무제한
수료증: 발급
난이도: 
입문
-
초급
-
중급이상
지식공유자 답변이 제공되는 강의입니다
폴더에 추가 공유

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

스프링 시큐리티 OAuth2의 기본 개념부터 API 사용법과 내부 아키텍처를 학습합니다. 아울러 OAuth2 Client, OAuth2 Resource Server, Authorization Server를 통합하여 연동하는 방법을 살펴보고 자체 인가 서버를 구축하며 이를 통해 OAuth2 서비스를 구현하는 방법을 학습하게 됩니다.

✍️
이런 걸
배워요!
스프링 시큐리티 핵심 개념 이해
OAuth 2.0 Authorizatioin Framework 기본
Java Cryptography Architecture 기초
JWT 기본/활용
스프링 시큐리티 OAuth 2.0 Client 이론/실습/활용
스프링 시큐리티 OAuth 2.0 Resource Server 이론/실습/활용
스프링 시큐리티 OAuth 2.0 Authorization Server 이론/실습/활용

막강한 인증/인가 처리를 위한 최선의 선택! 
제대로 배우는 스프링 시큐리티 OAuth2 🔐

스프링 시큐리티 OAuth2?

Spring Security OAuth2는 OAuth 2.0 Authorization Framework 표준 기술 사양을 채택하여 OAuth2 Client, Resource Server, Authorization Server 군으로 분류하여 API를 제공하고 있습니다.

전통적인 세션 기반 인증 방식의 강력한 대안

과거부터 현재에 이르기까지 레거시 시스템의 전통적인 인증 및 인가 방식으로 세션/쿠키를 활용한 기술을 많이 사용하고 있습니다. 그러나 시스템의 규모가 커지고 모바일, 태블릿, PC, IOT 등 다양한 기기의 인증 처리를 하는 데 있어 세션 공유 문제나 서버 자원 부담, 보안 안전성, 복잡한 아키텍처 구성 등 기존 세션 방식의 인증 구성이 여러 문제와 한계를 지닌 것으로 인식되고 있습니다.

특히 모놀리틱이 아닌 MSA 방식의 인프라가 점점 추세가 되고 있는 현시점에서는 더더욱 세션 기반 인증방식이 효율적인 대안이 되지 못하는 것도 사실입니다.

이에 위 한계점과 문제들을 해결하기 위한 방식으로 세션이 아닌 토큰 방식으로 인증/인가처리를 하기 위한 필요성이 대두되어 OAuth, JWT와 같은 인증 처리 기술들이 탄생했습니다. 이리하여 글로벌 기업인 구글, 페이스북, 깃헙에서 서비스하는 OAuth 서비스를 활용해 더욱 간결하고 강력한 인증/인가 처리를 할 수 있게 되었습니다.

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


스프링 시큐리티 OAuth 
핵심 이해 강의

🔑

단순한 API 사용법과 문법만을 학습하지 않습니다. 인가 기술의 원리와 구조를 토대로 핵심 기술에 대한 이해를 높입니다.

🎓

스프링 시큐리티 OAuth2가 어떤 구조로 동작하는지 정확한 흐름들을 이해하고 원리를 파악하도록 합니다.

🧰

스프링 시큐리티 OAuth2가 제공하는 기본 기능을 확장하여 커스터마이징하는 역량을 기를 수 있습니다.

스프링 시큐리티 OAuth2의 기술을 어떻게 실무적으로 활용할 수 있을지에 대한 감각을 익히게 됩니다.

주요 학습 내용

💡 본 강의는 OAuth 2.0 표준 기술과 이를 바탕으로 한 스프링 시큐리티 OAuth2의 핵심 개념인 OAuth2 Client, Resource Server, Authorization Server의 세 가지 축을 중심으로 수업을 진행합니다.

1) OAuth 2.0 Authorization Framework

RFC 표준 기술인 OAuth 2.0 인가 프레임워크의 전반적인 개념과 원리, 구조 등의 내용을 살펴봅니다.

스프링 시큐리티 OAuth2의 본격적인 기술을 학습하기에 앞서 OAuth 2.0 의 표준 기술에 대한 기초와 기본적인 이론을 먼저 이해하고, 실습을 통해 정확한 개념을 숙지함으로서 스프링 시큐리티 OAuth2의 내용을 어려움 없이 따라갈 수 있도록 합니다.

2) OAuth2 Client

OAuth 2.0 의 클라이언트 모듈로서 클라이언트에서 인가 서버와 연동할 수 있는 여러 유형의 권한 부여 타입과 요청 API를 소개하며 인가서버로부터 발급받은 토큰을 사용하여 리소스 서버로의 접근제어를 어떻게 구현하는가에 대한 내용을 학습합니다.

또한 구글, 페이스북, 깃헙, 네이버 , 카카오 등 OAuth 2.0 Authorization Server 서비스 제공자와의 연동을 통해 소셜 로그인 기능을 구현하는 방법을 소개합니다. 그리고 인증 프로토콜인 OpenID Connect 를 소개하며 인증 처리를 위한 다양한 옵션 설정방법과 흐름을 이해합니다.

3) OAuth2 Resource Server

사용자의 자원을 보호하고 있는 서버로서 API 서버의 역할을 수행하게 됩니다. 리소스 서버가 자원을 보호하는 방법을 살펴보고 Access Token을 포함한 요청에 대해서 토큰의 유효성을 검증하는 방법과 권한 체계를 제어하는 흐름에 대해 학습합니다.

OAuth2 서비스 제공자에서 발급하는 Access Token이 JWT 포맷으로 생성된 토큰일 경우 Scope(범위) 를 추출하는 내용을 살펴보고 리소스 서버에서 Access Token에 포함된 Scope를 분석하여 권한 여부를 어떻게 판별하는지 내용을 학습합니다.

4) OAuth2 Authorization Server 

시중에는 오픈소스를 포함한 다양한 Authorization Server 상용 제품 및 서비스가 있습니다. 스프링 시큐리티 개발팀에서 Authorization Server 프레임워크 프로젝트를 중단하기도 했지만 수많은 개발자들의 빗발치는 요청으로 Authorization Server 프로젝트가 완전히 새로운 설계로 다시금 탄생했습니다.

본 강의에서는 새로운 아키텍처로 재탄생한 Authorization Server 프로젝트를 기준으로 강의를 제작했습니다. OAuth2 Client와 Resource Server와의 연동을 통한 인가서버로서의 기능에 대한 상세한 내용을 살펴보며 자체적으로 인가 서버를 구축하여 서비스할 수 있는 지식을 갖추도록 하는 데 중점을 두었습니다.

Authorization Server 기능을 처리하는 주요 클래스를 알아보고 커스터마이징할 수 있는 방법을 알아봅니다. 또한 OAuth 2.0 표준 엔드 포인트에 대한 사양을 살펴보고 각 엔드포인트마다 설정된 필터들의 구조와 처리 과정을 학습합니다.

아키텍처/흐름/원리를 두루 이해할 수 있습니다.

스프링 프레임워크 프로젝트 가운데 스프링 시큐리티는 기술 아키텍처, 동작원리, 흐름 이해 등의 내부 소스 레벨의 구현에 대한 전반적인 이해가 굉장히 중요합니다.

주어진 API 위주로 사용하다가 예기치 못한 오류나 이슈에 부딪치게 되면 구글에 검색해서 해결방안을 찾기 마련입니다. 그러나 스프링 시큐리티 OAuth2 에 관한 자료들이 많지 않고 대부분 비슷한 사례들이 반복해서 나오는 수준이기 때문에 스프링 시큐리티 OAuth2의 내부 구조와 동작 원리를 정확하게 이해하지 못하거나 분석이 되지 못한다면 서비스 운영에 많은 어려움을 겪게 됩니다.

그렇기 때문에 이번 강의는 다양한 도식 및 Flow와 디버깅을 통한 정확하고 상세한 설명을 통해 단순한 API 사용법과 기능 예제를 넘어 스프링 시큐리티 OAuth2의 구조와 흐름을 완전하게 분석하고 이해함으로서 어떤 상황에서도 유연한 대처가 가능한 지식을 갖추도록 하는 데 중점을 두고 있습니다. 이는 본 강사가 개설한 강의들의 패턴 및 공통적인 특징이라 할 수 있습니다.


강의 구성 및 상세 커리큘럼 

Part 1. 스프링 부트 기반으로 개발하는 스프링 시큐리티

스프링 시큐리티의 핵심 개념인 인증과 인가의 두 축을 중심으로 강의가 진행됩니다. 스프링 시큐리티의 기초와 기본이 굉장히 중요하기 때문에 Part. 1에서는 스프링 시큐리티를 구성하는 핵심 구조 및 인증, 그리고 인증과 관련된 주요 항목들에 대한 정확한 개념을 이해하고 예제와 실습을 통해 실무적인 개발에 도움이 되도록 구성했습니다.

Part. 1을 수강하게 되면 스프링 시큐리티의 전체적인 Fundamentals을 확실하게 정립함과 동시에 더 나아가 보안 시스템 구축 시 시큐리티 기본구조를 확장하고 응용이 가능한 수준의 역량을 기르게 됩니다.

Part 2. 스프링 부트 기반으로 개발하는 스프링 시큐리티 OAuth2

OAuth2의 기본 개념과 흐름의 정확한 이해와 스프링 시큐리티 OAuth2의 핵심 모듈인 OAuth2 Client, Resource Server, Authorization Server의 기술에 대해 학습합니다. Part. 2를 원활하게 학습하기 위해서는 Part. 1의 기본 내용에 대한 이해가 필수이기 때문에 반드시 사전에 지식을 습득한 후 수강해야 합니다. 

Part. 2에서는 OAuth2에 관한 다양한 기술들이 복합적으로 구성되어 있기 때문에 방대한 OAuth2 관련 개념을 충분히 이해하고 이를 바탕으로 클라이언트 앱, 리소스 서버, 인가서버 상호간의 연동 과정을 상세하고 깊이 있게 분석하고 살펴봅니다.

Spring Security Fundamentals

스프링 시큐리티의 핵심 기초를 살펴봅니다. 초기화 과정에 대한 자세한 내용과 원리를 알아보고 HttpBasic, Cors와 같은 요소를 다룹니다.

OAuth 2.0 Authorization Framework

OAuth 2.0 표준 기술에 대한 상세 사양에 대해 학습합니다. OAuth 2.0에서 표현되는 다양한 용어를 먼저 이해하고 권한부여 흐름의 타입에 대한 개념 정리와 keycloak 오픈 소스를 활용해 인가 프레임워크의 전반적인 흐름을 이해합니다.

OAuth 2.0 Client - oauth2Login()

클라이언트 앱의 기능을 자동화하며 권한부여 흐름의 타입인 Authorization Code 방식으로 인가서버와의 연동방법을 학습하며 사용자 승인과 승인 이후 Access Token 을 받아와 인증/인가 처리에 이르기까지의 전 과정을 살펴보고 내부구조에 대해 학습하게 됩니다.

OAuth 2.0 Client - oauth2Client()

oauth2Login() API에서 제공하는 권한부여 흐름의 타입인 Authorization Code 외에 Resource Owner Password와 Client Credentials 타입으로 인가서버와 연동하는 방법을 살펴보며 DefaultOAuth2AuthorizedClientManager, @RegisteredOAuth2AuthorizedClient의 사용방법을 알아보고 이를 통해 클라이언트 권한부여 흐름을 이해합니다.

OAuth 2.0 Client - OAuth 2.0 Social Login

OAuth2 서비스 제공자로 구글, 페이스북, 깃헙, 네이버, 카카오 등이 있는데 이중 구글, 네이버, 키클록을 사용하여 로그인 인증하는 방식과 인증 이후 후속처리에 대한 구현방법을 살펴봅니다.

OAuth 2.0 Resource Server API - jwt()

리소스 서버를 구성하는 방법과 Access Token 요청을 처리하는 JwtDecoder의 기능을 살펴보고 토큰 검증의 성공이후 생성되는 인증관련 객체의 구조와 사용방법을 학습합니다. 또한 Access Token의 유효성을 검증할 때 사용되는 MAC & RSA 알고리즘 방식이 무엇이며 어떤 처리절차에 의해 검증이 이루어지는지 살펴봅니다.

OAuth 2.0 Resource Server - 리소스 서버 권한 구현

Access Token 요청을 처리하는 필터와 JwtDecoder에 의해 추출된 Scope를 권한으로 변환하고 변환된 권한으로 자원의 접근여부를 제어하는 방법에 대해 학습합니다.

OAuth 2.0 Resource Server - opaque()

원격 토큰 검사 프로세스로서 Access Token의 활성화 여부를 인가서버와 직접 통신하여 알아보는 방법을 학습합니다.

Spring Authorization Server - 주요 도메인 클래스

인가서버를 구성하는 주요 도메인 클래스의 종류와 개념, 역할 등을 학습하며 이 클래스들이 스프링 MVC에서 어떤 방식으로 참조 및 활용이 가능한지 학습합니다.

Spring Authorization Server - 엔드포인트 프로토콜

인가서버의 핵심 기능인 여러 유형의 엔드포인트 프로토콜에 대해 학습합니다. 권한 부여 요청을 시작한 엔드포인트 부터 사용자 정보를 요청하는 엔드포인트까지의 전 과정을 도식과 흐름을 통해 자세하게 살펴보게 됩니다.

OAuth 2.0 Client + Resource Server + Authorization Server 연동

스프링 시큐리티에서 제공하는 각 OAuth2의 모듈들을 연계 및 연동하는 방법을 알아보고 이를 통해 OAuth2 서비스 제공자로서의 기능을 수행하는 구체적인 항목들을 예제를 통해 살펴보게 됩니다.


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

정수원(leaven)

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

함께 보면 좋은 강의

이런 분들께 추천드려요!

🎓
학습 대상은
누구일까요?
OAuth 2.0 기초와 개념을 확실하게 이해 하고자 하는 분
스프링 시큐리티 OAuth2 와 관련된 전반적인 기초와 원리를 정확하게 이해하고자 하는분
스프링 시큐리티 OAuth 2.0 을 활용해 인증/인가 기능을 구현하고자 하는분
OAuth 2.0 의 인가서버를 구축하고 서비스하고자 하는 분
📚
선수 지식,
필요할까요?
스프링 시큐리티 기본(필수), 스프링 부트 & MVC, DB
Lombok
MySQL

안녕하세요
정수원 입니다.
정수원의 썸네일

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

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

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

 

커리큘럼 총 109 개 ˙ 44시간 31분의 수업
이 강의는 영상, 수업 노트, 첨부 파일이 제공됩니다. 미리보기를 통해 콘텐츠를 확인해보세요.
섹션 1. Spring Security Fundamentals
초기화 과정 이해 - 프로젝트 생성 / 의존성 추가 미리보기 08:23
초기화 과정 이해 - SecurityBuilder / SecurityConfigurer 40:52
자동설정에 의한 초기화 과정 이해(1) 19:53
자동설정에 의한 초기화 과정 이해(2) 20:20
AuthenticationEntryPoint 이해 25:19
시큐리티 인증 및 인가 흐름 요약 미리보기 38:21
Http Basic 인증 35:02
Cors 이해 (1) 26:59
Cors 이해 (2) 25:06
섹션 2. OAuth 2.0 용어 이해
OAuth 2.0 소개 미리보기 16:02 OAuth2 오픈 소스 - Keycloak 설치 & 설정 미리보기 16:22
OAuth 2.0 Roles 이해 23:26
Oauth 2.0 Client Types 이해 21:57
Oauth 2.0 Token Types 이해 14:47
섹션 3. OAuth 2.0 권한부여 유형
OAuth 2.0 Grant Type 개요 31:31
Authorization Code Grant Type - 권한 부여 코드 승인 방식 24:06
Implicit Grant Type - 암묵적 승인 방식 06:00
Resource Owner Password Credentials Grant Type - 패스워드 자격증명 승인 방식 11:51
Client Credentials Grant Type - 클라이언트 자격증명 승인 방식 08:41
Refresh Token Grant Type - 리프레시 토큰 승인 방식 11:26
PKCE-enhanced Authorization Code Grant Type - PKCE 권한부여 코드 승인 방식 19:50
섹션 4. OAuth 2.0 Open ID Connect
개요 및 특징 11:20
ID Token & Scope 29:05
섹션 6. OAuth 2.0 Client Fundamentals
클라이언트 앱 시작하기 - application.yml/ OAuth2ClientProperties 40:23
ClientRegistration 이해 및 활용 43:40
ClientRegistrationRepository 이해 및 활용 16:54
자동설정에 의한 초기화 과정 이해 13:49
섹션 7. OAuth 2.0 Client - oauth2Login()
OAuth2LoginConfigurer 초기화 이해 33:19
OAuth2 로그인 구현 - OAuth 2.0 Login Page 생성 14:19
OAuth2 로그인 구현 - Authorization Code 요청하기 37:36
OAuth2 로그인 구현 - Access Token 교환하기 37:39
OAuth2 로그인 구현 - Oauth 2.0 User 모델 소개(1) 23:29
OAuth2 로그인 구현 - Oauth 2.0 User 모델 소개(2) 29:21
OAuth2 로그인 구현 - UserInfo 엔드포인트 요청하기 47:20
OAuth2 로그인 구현 - OpenID Connect 로그아웃 19:58
OAuth2 로그인 구현 - Spring MVC 인증 객체 참조하기 17:33
API 커스텀 구현 -Authorization BaseUrl & Redirection BaseUrl 24:13
API 커스텀 구현 - OAuth2AuthorizationRequestResolver(1) 43:02
API 커스텀 구현 - OAuth2AuthorizationRequestResolver(2) 27:11
섹션 8. OAuth 2.0 Client - oauth2Client()
OAuth2ClientConfigurer 초기화 이해 09:16
OAuth2AuthorizedClient 이해 및 활용 45:52
DefaultOAuth2AuthorizedClientManager 소개 및 특징 12:51
DefaultOAuth2AuthorizedClientManager 기본 환경 구성 19:20
DefaultOAuth2AuthorizedClientManager - Resource Owner Password 권한 부여 구현하기(1) 34:47
DefaultOAuth2AuthorizedClientManager - Resource Owner Password 권한 부여 구현하기(2) 18:07
DefaultOAuth2AuthorizedClientManager - Client Credentials 권한 부여 구현하기 11:01
DefaultOAuth2AuthorizedClientManager - Refresh Token 권한 부여 구현하기 40:56
DefaultOAuth2AuthorizedClientManager -필터 기반으로 구현하기 29:53
@RegisteredOAuth2AuthorizedClient 이해 및 활용 19:33
섹션 9. OAuth 2.0 Client - Social Login (Google, Naver, KaKao) + FormLogin
OAuth 2.0 Social Login 연동 구현 (1) 18:10
OAuth 2.0 Social Login 연동 구현 (2) 42:07
OAuth 2.0 Social Login 연동 구현 (3) 34:13
OAuth 2.0 Social Login 연동 구현 (4) 43:53
OAuth 2.0 Social Login 연동 구현 (5) 42:38
OAuth 2.0 Social Login 연동 구현 (6) 58:23
섹션 10. OAuth 2.0 Resource Server
OAuth 2.0 Resource Server 소개 및 프로젝트 생성 미리보기 10:17
Resource Server 시작하기 - application.yml / OAuth2ResourceServerProperties 26:51
AuthenticationEntryPoint 15:27
자동설정에 의한 초기화 과정 18:04
섹션 11. OAuth 2.0 Resource Server API - jwt()
JWT API 설정 및 검증 프로세스 이해 36:44
JwtDecoder 소개 및 세부 흐름 41:50
JwtDecoder 생성 방법 23:32
섹션 12. OAuth 2.0 Resource Server - 검증 기초
JCA & JCE - 소개 및 구조 28:14
JCA & JCE - 대칭키 & 비대칭키 35:25
JWT - 소개 및 특징 17:39
JWT - JWK 이해 및 활용하기 25:12
섹션 13. OAuth 2.0 Resource Server - MAC & RSA 토큰 검증
기본 환경 및 공통 클래스 구성 34:03
MAC 검증 기능 구현 - JwtAuthorizationMacFilter 54:56
MAC 검증 기능 구현 - JwtDecoder 에 의한 검증 13:53
RSA 검증 기능 구현 - JwtAuthorizationRsaFilter 18:46
RSA 검증 기능 구현 - JwtDecoder 에 의한 검증 08:08
RSA 검증 기능 구현 - PublicKey.txt 에 의한 검증 47:21
RSA 검증 기능 구현 - JwkSetUri 에 의한 검증 10:33
Authentication & @AuthenticationPrincipal 참조하기 16:10
검증 아키텍처 이해 - BearerTokenAuthenticationFilter 12:44
섹션 14. OAuth 2.0 Resource Server - 리소스 서버 권한 구현
Scope 기반 권한 매핑 구현하기 23:39
권한 구성 커스터마이징 - JwtAuthenticationConverter 20:27
섹션 15. OAuth 2.0 Resource Server - opaque()
Opaque 개념 및 프로세스 이해 22:27
토큰 검사 및 프로세스 이해 16:36
섹션 16. OAuth 2.0 Client + OAuth 2.0 Resource Server 연동
연동 구현 (1) 26:25
연동 구현 (2) 27:15
섹션 17. Spring Authorization Server
OAuth 2.0 Authorization Server 소개 미리보기 12:06
초기화 과정 이해 - OAuth2AuthorizationServerConfiguration 28:25
초기화 과정 이해 - OAuth2AuthorizationServerConfigurer 21:12
초기화 과정 이해 - ProviderContext 10:39
Spring Authorization Server - 인가서버 시작하기 40:14
섹션 18. Spring Authorization Server - 주요 도메인 클래스
RegisteredClientRepository / RegisteredClient 이해 및 활용 28:47
OAuth2AuthorizationService / OAuth2Authorization 이해 및 활용 30:07
섹션 19. Spring Authorization Server - 엔드포인트 프로토콜
OAuth 2.0 AuthorizationServer Endpoint 기능 및 특징 17:05
OAuth 2.0 AuthorizationServer Endpoint - 사용자 인증단계 23:38
OAuth 2.0 AuthorizationServer Endpoint - 동의단계 34:28
OAuth 2.0 Token Endpoint 기능 및 특징 11:56
OAuth 2.0 Token Endpoint Flow - 클라이언트 인증하기 26:54
OAuth 2.0 Token Endpoint Flow - Authorization Code 엔드포인트 47:52
OAuth 2.0 Token Endpoint Flow - Client Credentials 엔드포인트 14:59
OAuth 2.0 Token Endpoint Flow - Refresh Token 엔드포인트 17:43
OAuth 2.0 Token Endpoint Flow - Authorization Code with PKCE 엔드포인트 25:29
OAuth 2.0 Token Introspection Endpoint - 토큰 검사 엔드포인트 32:51
OAuth 2.0 Token Revocation Endpoint - 토큰 해지 엔드포인트 16:13
OAuth 2.0 Authorization Server Metadata Endpoint / JWK Set Endpoint 29:47
OpenID Connect 1.0 Endpoint - 사용자 정보 엔드포인트 34:21
섹션 20. OAuth 2.0 Client + Resource Server + Authorization Server 연동
연동 구현(1) 13:38
연동구현 (2) 53:08
강의 게시일 : 2022년 10월 17일 (마지막 업데이트일 : 2022년 11월 10일)
수강평 총 37개
수강생분들이 직접 작성하신 수강평입니다.
4.8
37개의 수강평
5점
4점
3점
2점
1점
VIEW 추천 순 최신 순 높은 평점 순 낮은 평점 순 평점 순 높은 평점 순 낮은 평점 순
소라연 thumbnail
5
기다리던 강의가 출시되서 기쁜 마음으로 수강신청하고 열심히 공부 중 입니다. OAuth2 표준의 이해와 스프링시큐리티가 어떤식으로 코드를 구현했는지 생각하며 수업을 들으니 도움이 많이 되고 있습니다. 사실 조금 어렵지만 끝까지 완강해서 개인적으로도 성장 할 수 있으면 좋겠습니다. 좋은 강의 정말 감사드립니다. 건강하세요^^
2022-11-07
지식공유자 정수원
네 감사드립니다^^ 말씀하신 것 처럼 OAuth2.0 표준 사양을 준수하여 구현한 스프링 시큐리티 OAuth2 의 기술을 학습하시다 보면 어느새 모르게 거의 준 전문가적인 OAuth2.0 의 개념을 터득하게 됩니다. 왜냐 하면 그만큼 스프링 시큐리티의 OAuth2.0 의 기술적 완성도가 높기 때문입니다. 전반적인 기술 난이도가 쉽지 않겠지만 끝까지 완주하시고 좋은 성과 있으시길 바라겠습니다~~
2022-11-07
dhtmdgus2134 thumbnail
5
정말 상세하게 설명해줍니다. 디버깅 과정을 보여줘서 기억에 훨씬 남네요. 이 정도는 해야 OAuth 2.0 사용해봤다는 말을 할 수 있을것 같아요
2023-01-08
지식공유자 정수원
반복해서 꾸준히 하시다 보면 그렇게 어려웠던 것도 술술 풀리는 순간이 오게 됩니다. 그 고비들을 잘 넘기시길 바랍니다. 소중한 평가 감사드립니다.^^
2023-01-16
이화평 thumbnail
5
정말 좋은 강의인 것은 분명합니다. 스프링 배치 > 시큐리티 > OAuth2 까지 모두 다 듣고 있습니다. 장점은 다른 분들이 모두 말씀해주셨기에, 건의(?) 혹은 아쉬운 점에 대해서 말씀드리고 싶습니다. 스프링의 모든 소스코드 레벨을 디버깅 모드에서 확인하는 것이 큰 도움이 될까 생각됐습니다. 물론 강사님께서 미리 브레이크 포인트를 집어주시면서 확인하시지만, 휙휙 지나가는 화면을 따라가는 게 쉽지 않아보입니다. 물론, 어떤 기술을 사용하려면 모두 알아야지!!라고 한다면 할 말은 없겠지만 강사님의 이론 부분을 설명하시면서 일부 소스코드를 인용하는 정도로 끝내는 것이 강의가 더 컴팩트하고 가성비가 좋지 않을까 생각됩니다. 분명 좋은 강의인 것은 맞지만 디버깅 과정까지 모두 습득하려면 엄청난 시간이 투자되어야하고, 실무에 당장 사용하기 위해 이 강의를 들었다면 실무에 적용하는 것은 다음으로 미뤄야겠다라는 생각도 들 것 같습니다. 강사님께서 앞으로도 더 좋은 강의를 만들어주시길 바라는 마음에서 수강평을 남깁니다.
2023-04-23
지식공유자 정수원
네 진심어린 평가를 해 주셔서 감사드립니다^^ 말씀하신대로 강의에서 디버깅을 활용한 소스레벨의 처리과정을 보여주는 것이 어떤 의미에서는 필수 요소가 아닐 것입니다. 상대적으로 강의 시간도 늘어나고 또 디버깅 과정을 한번 본다고 해서 쉽게 이해할 수 없는 것도 있습니다. 그럼에도 불구하고 강의에 디버깅 요소를 넣는 이유는 프레임워크 혹은 라이브러리의 내부 처리 과정에 대한 명확한 이해를 돕고자 함입니다 물론 모든 모듈과 API 에 대한 내부 과정과 흐름을 알 필요는 없고 알 수도 없습니다 저의 관점에서 볼 때 이 API 는 내부처리 과정을 아는 것이 어떤 기능을 구현할 때 중요하다고 판단되면 디버깅을 통해 전반적인 처리 과정을 설명해 드리고 있습니다 디버깅은 디버깅 자체로 끝나는 것은 아무런 의미가 없습니다 디버깅을 통해 해당 API 를 설계한 목적과 원리를 확실하게 이해함으로서 API 를 단순하게 사용하는 것을 뛰어넘어 내가 원하는대로 커스텀하게 확장하거나 응용할 수 있는 역량을 기르기 위함입니다 비록 우리가 직접 스프링 시큐리티를 설계하거나 만들지는 않았지만 디버깅을 통해 간접적으로 해당 코어기술 설계에 참여하고 어떤 원리로 구현하였는지를 부분적으로나마 체험할 수 있는 좋은 방법이기 때문입니다 이런 과정이 반복되고 쌓이고 쌓이게 되면 API 의 기본적 사용은 물론이고 해당 기술에 대한 깊은 이해를 바탕으로 복잡한 커스텀 응용이 가능해지고 예외나 이슈 발생 시 빠르게 대응할 수 있습니다 하지만 과유불급인 것처럼 너무 지나치게 소스레벨을 들여다 보다 보면 전체 그림을 놓칠 수 있기 때문에 본인의 수준과 이해 능력에 따라 조절해 가며 분석해 나가는 방식을 취해야 합니다 그건 제가 완급조절을 통해 적절한 수준에서의 디버깅 활용을 강의에 녹여낼 수 있도록 계속 고민하면서 발전해 나가도록 하겠습니다 다시 한번 소중한 평가 감사드립니다^^
2023-04-23
literate_t thumbnail
5
안녕하세요. 시큐리티와 OAUTH2 강의 잘 들었습니다. 강사님이 강의를 많이 준비하신 게 느껴지고 열정도 느껴집니다. 그리도 굉장히 지식적으로 깊은 분이라는 것도요. 하지만 교수법은 좀 보완해주시면 좋을 것 같습니다. 1. 설명이 좀 급하게 진행되는 느낌이 있어요. 이건 사바사긴 한데 차분하게 강의를 이끌어주시는 게 사바사를 줄일 수 있는 방법 같다고 생각됩니다. 가끔은 발음 때문에 무슨 단어인지 끝내 알지 못하고 넘어간 적도 있습니다. 2. 강의는 수강생이 주도적으로 학습하기 어려운 구조입니다. 기본적으로 따라갈 수밖에 없어요. 그런 상황에서 강의자와 수강생이 제대로 동기화가 안 되고, 강의자가 수강생과 맥락이 다르게 되면 수강생은 굉장히 스트레스를 받게 됩니다. 커뮤니티에도 그런 부분에서 불만을 표하는 좀 감정적인 글이 가끔 보이더라고요. 심정은 조금 이해가 갑니다. 강의 구매자들은 대부분 꽤 많은 기대를 하고 강의 수강을 시작하게 되기 때문입니다. 강의자 입장에서 너무 당연한 것이(연차가 높고 지식을 많이 알수록 이런 경향이 강해집니다), 수강생 입장에선 전혀 그렇지 않을 때가 왕왕 있어요. 3. 예를 들어 권한 부여 요청을 포스트맨으로 실습하다가 스프링으로 넘어가는 것 자체는 좋았는데요. 음. 말씀하시는 속도가 특별한 포인트 없이 빠르다 보니까 중요한 이야기 같은 것이 물 흐르듯 넘어가는 느낌이 있어요. 예를 들어 최초 권한 부여 요청 할 때 로그인 버튼 누르면 클라이언트가 /oauth2/authorization으로 요청하고 클라이언트가 인가 서버로 임시 코드 요청할 때는 /oauth2/authorize로 내려주는데, 이게 그냥 와다다다 진행되니까 인지가 한동안 안 되더라고요. 꽤 오랫동안 좀 많이 헷갈리고 혼란스러웠습니다. 그래서 혼자 한땀한땀 디버깅하면서 익숙해졌어요. 아마 강사님 입장에선 너무 익숙하다 보니, 그런 것에 대한 인지가 잘 안 되실 수 있다 생각은 합니다만, 강의 하실 때 "이 url이 좀 헷갈릴 수 있다. 최초 로그인은 /oauth2/authorization, 코드 요청은 /oauth2/authorize 인데, 실제로 권한 처리 방식은 클라이언트가 code 요청을 하면서 시작되니까 authorize가 권한을 부여하다라는 의미이므로 /oauth2/authorize가 코드 요청을 하는 URL입니다. 이런 맥락에서 기억하면 좋을 것 같습니다" 같은 식으로 한 번 짚어주시는 게 수강생 입장에선 학습에 꽤나 큰 도움이 되는 포인트가 됩니다. 4. 다음 챕터 강의를 진행할 때 새로운 코드(처음부터)를 진행하시는 경우가 많이 있습니다. 수강평에 어떤 분이 코드를 유지해달라고 한 게 같은 이유인 것 같은데요. 영한님이 처음 강의 이후에는 다 코드를 남겨주니까 확실히 편하더라고요. 그 과정이 편집없이 진행되는데 그냥 그거를 같이 보고 따라하는 것만으로도 공부가 될 수도 있고 수강생과 강의자가 같은 페이지에 놓일 수 있어 장점이 있습니다. 수원 강사님처럼 매번 새로운 브랜치에서 시작하셔도 되는데, 강의 초반에 딱 한 번의 가이드가 있었으면 좋았을 것 같아요. 각 클립 혹은 섹션은 브랜치 단위로 관리되니까 웬만하면 수강생들도 그렇게 해달라. 깃 초급자도 있을 수 있으니까요. 한 번만 보여주면 되죠. PR 날려서 마스터로 병합할 거 아니니까 그냥 브랜치만 새로 생성하는 것만 보여주시면 수강생이 강사님과 같은 페이지에 있게 되는 거죠. 5. 마지막으로 Filter -> Manager -> Provider -> .. 이런 관계는 강의 본격적인 시작 전에 알려주시는 게 더 좋았을 것 같아요. 강의 중후반부에 언급하시더라고요. 강의 들으면서 저 패턴이 정해져있다는 걸 알게 되긴 했지만 초반에 패턴을 알았다면 더 수월했을 것 같습니다. 아마 다른 강의는 좀 덜할텐데 시큐리티기 워낙 클래스가 많고 뎁스가 깊어서 강의를 따라가다 보면 좀 정신 없고, 강의를 따라가는 중에도 길을 잃게 되더라고요. 물론 강사님께서 초반에 클래스 도식도 같은 거로 흐름을 짚어주시긴 하는데 처음 보는, 긴 이름의 클래스들들이 화면을 가득 채우면..그 흐름이 한 번에 확 와닿지 않습니다. 물론 도움은 되지만, 여전히 수강생과 같은 페이지에 있진 않은 것 같아요. 6. 아 그리고 인메모리에 저장하는 거 말고 최종 실습 때는 db에 저장한다고 분명 말씀하셨는데 중간에 잊으셨는지 끝까지 인메모리로 해서 실습이 종료된 건 조금 많이 아쉬웠습니다. 이건 작은 거긴 한데 최종 실습 때 리소스서버 이름을 1, 2 이렇게 하는 것보다 ResourceServerPhoto 이런 식으로 해주시면 더 좋을 것 같습니다. 옛날에 C++ 강의를 들을 때 강의자가 말하기를 "매번 같은 예제여서(거의 Person 클래스에 이름, 나이, 몇 가지 정보만 넣어서 예제를 작성함) 좀 지루하거나 재미 없을 수 있는데, 여러분은 앞으로 배울 게 많기 때문에 이런 부분에서는 새로움에 대한 허들이 낮아야 학습하기 편하다"라고, 말씀하신 게 기억에 좀 남아 있습니다. 아인슈타인이 말하기를, 설명할 때는 관련 지식이 없는 할머니도 이해할 수 있게 만들어야 한다고 하는 말을 좋아하는 터라, 교수법 관련해서 느낀 게 많아 생각을 남겨봤습니다. 그럼에도 불구하고 수강생 여러분, 시큐리티도 그렇고 이 강의는 시큐리티 프레임워크의 깊은 속내를 파악할 때 훌륭한 지침서가 되어주는 강의입니다. 저는 이제 디버깅 할 때 중단점을 어디에 어떻게 찍어야 할지 거의 다 알고 있습니다. 제가 생각한 곳에 중단점이 찍히지 않으면 더 이리저리 뒤지면서 올바른 흐름을 파악할 수 있게 됐어요. 시큐리티나 OAUTH2 분명히 쉬운 강의는 아니지만 그만큼 노력한다면 얻어가는 게 많은 강의라고 생각합니다. 잘 배워갑니다. 감사합니다.
2024-02-23
지식공유자 정수원
강의 평가를 이렇게까지 정성스럽게 해 주시니 벅찬 감동입니다 그리고 진심어린 조언도 너무 감사드립니다. 말씀해 주신 항목들은 강의 제작시 최대한 참고하도록 하겠습니다. 다만 습관이라는 게 무섭다고 신경을 쓴다고 했는데도 여러가지로 부족한 점이 나올 수 있다는 점 너그러이 이해 해 주셨음 고맙겠습니다. 경력이나 연차를 떠나서 세상에는 훌륭한 개발자들이 생각보다 훨씬 많다는 것을 생각하며 항상 겸손한 자세로 스스로를 바라보기 위해 노력합니다. 비록 제가 인퍼런에서 강사로서 활동하지만 강사가 수강생보다 더 뛰어나거나 능력이 우수하여 가르치는 위치에 있다고 생각하지 않습니다. 물론 강의하는 입장에서 수강생분들에게 최대한의 품질을 제공하기 위해 노력해야 한다는 것은 당연하겠지만 그것이 반드시 실력이나 능력이 더 출중하기 때문이라기 보다는 강사가 알고 있는 지식을 필요로 하는 대상이 존재하기 때문이고 수강생분들 가운데서도 강사보다 더 훌륭한 개발자가 존재할 것이라는 생각을 늘 하면서 강의를 준비합니다. 아직 전문강사의 요건을 많이 갖추지 못해서 허술한 점이나 개선해야 할 부분들이 적잖이 있어 강의를 제작할 때 늘 고민하고 개선해 나가기 위한 노력을 하고 있습니다. 다시 한번 진심어린 조언과 응원 감사드리며 저 역시도 개인의 이익을 먼저 우선시 하기 보다는 저의 강의를 선택하신 수강생분들이 결코 실망하지 않는 강의가 되는 것을 최우선적으로 삼는 강사가 되도록 항상 노력하겠습니다. 감사합니다.
2024-02-24
kingbj0429 thumbnail
5
좋은 강의 감사합니다 :) 한국 강의로 제대로 된 시큐리티 관련 강의가 없어서 유데미로 들으려고 했는데 마침 완벽한 타이밍에 완벽한 강의가 나온거 같습니다!! 아직 1/5 정도 밖에 듣지 못했지만.. 정말 알찬 강의입니다!! 아주 만족합니다 :)
2022-10-20
지식공유자 정수원
첫 수강평이네요^^ 감사합니다~!! 강의시간이 길더라도 끝까지 완주하시길 응원드립니다.
2022-10-20
연관 로드맵
이 강의가 포함된 잘 짜여진 로드맵을 따라 학습해 보세요!