안녕하세요. ^^
스프링 시큐리티 OAuth2 강의가 곧 오픈 예정에 있습니다.
스프링 시큐리티 1편 강의에 이은 2편 강의라고 할 수 있습니다.
공통분모가 존재하기는 하지만 주제는 확연히 다르고 1편강의의 사전 지식을 필요로 합니다.
강의를 제작하면서 매번 느끼는 거지만 이번 강의 역시 처음 설계했던 것 보다 많은 시간과 에너지가 소요된 것 같습니다. 거의 1년만에 세상에 출시가 되네요~~
열심히 준비한만큼 이번 강의가 수강생분들 모두에게 좋은 결실로 다가갔으면 좋겠습니다.
오픈 예정일은 10 월 14 ~ 16 일경 정도 예상하고 있습니다.
- 강의명: 스프링 시큐리티 OAuth2
- 강의 수: 110강 내외
- 강의 자료 PPT: 420장
이번 강의에서 다루는 내용은 다음과 같습니다.
1. 스프링 시큐리티 OAuth2 핵심 이해
OAuth2.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 표준 엔드포인트에 대한 사양을 살펴보고 각 엔드포인트마다 설정된 필터들의 구조와 처리과정을 학습합니다.
2. 학습 커리큘럼
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 서비스 제공자로서의 기능을 수행하는 구체적인 항목들을 예제를 통해 살펴보게 됩니다.
3. 아키텍처/흐름/원리 이해
스프링 프레임워크 프로젝트 가운데 스프링 시큐리티는 기술 아키텍처, 동작원리, 흐름 이해 등의 내부 소스 레벨의 구현에 대한 전반적인 이해가 굉장히 중요합니다.
주어진 API 위주로 사용하다가 예기치 못한 오류나 이슈상황에 부딪치게 되면 구글 검색해서 해결방안을 찾게 되지만 스프링 시큐리티 OAuth2 에 관한 자료들이 많지 않고 대부분 비슷한 사례들이 반복해서 나오는 수준이기 때문에 스프링 시큐리티 OAuth2 의 내부 구조와 동작원리를 정확하게 이해하지 못하거나 분석이 되지 못한다면 서비스 운영에 많은 어려움을 겪게 됩니다.
그렇기 때문에 본 강좌에서는 다양한 도식 및 Flow 와 디버깅을 통한 정확하고 상세한 설명을 통해 단순한 API 사용법과 기능 예제를 넘어 스프링 시큐리티 OAuth2 의 구조와 흐름을 완전분석하고 이해함으로서 어떤 상황에서도 유연한 대처가 가능한 지식을 갖추도록 하는데 중점을 두고 있으며 본 강사가 개설한 강의들의 패턴 및 공통적인 특징이라 할 수 있습니다.