본문 바로가기

패스트캠퍼스/100% 환급 챌린지_2

패스트캠퍼스 환급챌린지 50일차 : Netplix 구독형 멤버십 프로젝트로 배우는 Spring Security 강의 후기

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://abit.ly/lisbva

 

 

안녕하세요 :)

오늘은 챌린지 50일차로, 드디어 마의 50 고지를 돌파!! 끝이 보이네요.

 

오늘 배울 내용은,

Part C. OAuth2.0 과 JWT

Ch 2. OAuth 2.0 구현

"01. 권한 서버 구현 - 1" 입니다.


 

오늘은 권한 부여 서버 구현에 대해 알아보는 시간을 가졌다. 권한 부여 서버는 사용자를 인증하고 클라이언트에 토큰을 제공한다. 클라이언트는 리소스 서버가 노출하는 리소스에 사용자를 대신해 접근할 때 이 토큰을 이용한다. 토큰을 얻기 위한 여러 흐름을 그랜트라고 한다. 직접 구현할 수도 있고 Keycloak, Okta 같은 타사 툴을 활용할 수도 있다. 이번 시간에는 직접 구현하는 방법으로 권한 부여 서버에 대해 알아보았다.

먼저 맞춤형 권한 부여 서버 구현에 대해서 알아보면, OAuth 2.0 프레임워크를 이용하기 위해서는 권한 부여 서버가 필수로 필요하다. 스프링 시큐리티 버전에 따라 권한 부여 서버를 구현하는 방법은 많이 다르다. 이번 시간에는 스프링부트3, 스프링 시큐리티6 버전 이상에서 활용할 수 있는 방법을 소개해주셨다. spring-authorization-server, spring-resource-server 등의 의존성을 활용하였다.

의존성에 대한 정보는 스프링부트 3.2.8, 스프링 클라우드 버전 2023.0.3, 자바17 이였고,

필요한 의존성은 spring-boot-starter-oauth2-authnorization-server과 spring-boot-starter-security과 spring-boot-starter-web과 spring-cloud-starter 였다. mavenBom은 spring-cloud-dependencies을 활용하였다.

다음으로 사용자 관리에 대해 알아보았는데, 권한 부여 서버는 OAuth 2.0 프레임워크에서 사용자 인증을 담당하는 구성 요소
- 따라서 사용자를 관리해야 한다. 예제에서는 InMemory 데이터베이스를 활용했다.

클라이언트 관리는 OAuth 2.0 프레임워크에서는 사용자가 클라이언트에 이용 권리를 허가했다고 미리 가정을 하고 진행된다. 예를 들어: "나 사용자는 클라이언트인 A 사이트에게 나의 카카오톡 로그인 정보를 이용할 권리를 허가함" 식으로. 클라이언트가 사용자 대신 리소스를 이용한다. 즉, 클라이언트로 동작하는 애플리케이션이 권한 부여 서버를 호출하기 위해서는 자체 자격 증명이 필요하다. 권한 부여 서버도 이러한 자격 증명을 관리하며, 사전에 협의된 클라이언트의 요청만 수락한다. 권한 부여 서버에서는 사용자 정보와 클라이언트의 정보를 관리하며, 사용자 정보 = 사용자 이름과 암호이고, 클라이언트 정보 = 클라이언트 이름과 암호이다. 설정 파일 기준으로 클라이언트를 설정할 수 있다.