본문 바로가기

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

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

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

https://abit.ly/lisbva

 

 

안녕하세요 :)

오늘은 챌린지 49일차로, 벌써 50일차를 하루 앞두고 있네요..

 

오늘 배울 내용은,

Part C. OAuth2.0 과 JWT

Ch 1. OAuth 2.0 이 동작하는 방법

"03. SSO 어플리케이션 구현 - 1" 입니다.


 

오늘은 간단한 SSO 애플리케이션 구현을 해보았다. 스프링 프레임워크 +스프링 시큐리티 + OAuth 2.0 프레임워크를 활용하여 간단한 SSO 애플리케이션을 구현했다.

SSO란 무엇일까? Single Sign-On의 약자로 사용자가 권한 부여 서버를 통해 인증하고, 애플리케이션이 리프레시 토큰 이용해 로그인 상태를 유지한다.

SSO는 GitHub 를 권한 부여 및 리소스 서버로 활용할 수 있다. 간단한 SSO 애플리케이션 구현해보았는데,

 

아키텍쳐를 살펴보면, 사용자는 브라우저에서 깃허브로 로그인하도록 리다이렉션 된다. 깃허브는 권한 부여 서버로 이용되고, 사용자에 관한 세부 정보를 애플리케이션에 제공할 때는 리소스 서버 역할도 수행한다.

클라이언트는 애플리케이션은 승인 코드 그랜트를 이용하여 로그인하고, 사용자를 깃허브로 리다이렉션한다.

권한 부여 서버 관리는 깃허브를 권한 부여 서버로 활용한다. 내부 애플리케이션이 사용자를 관리하지 않고 깃허브 계정이 있는 사용자라면 누구나 내부 애플리케이션에 로그인을 할 수 있다는 의미가 된다. 깃허브는 토큰을 발행할 대상인 클라이언트 애플리케이션에 대해 알아야 한다. 따라서 애플리케이션에 대해 깃허브 권한 부여 서버에 등록을 하는 과정이 필요하다.

OAuth를 애플리케이션 등록하는 방법은 Github 에 로그인 -> Settings -> Developer Settings -> OAuth Apps -> Register a new application 순서가 된다. 새로운 OAuth 애플리케이션을 등록하기 위해서는 애플리케이션의 이름, 홈페이지, 깃허브가 애플리케이션을 다시 호출할 링크를 지정해야 하며, 클라이언트가 로그인할 사용자를 권한 부여 서버로 리다이렉선 한 다음 권한 부여 서버가 다시 정의된 URL 로 클라이언트를 호출하는 과정을 거친다. 로컬 환경에서 수행할 예정이기 때문에 localhost 를 이용한다(기본 포트 활용). 깃허브는 클라이언트 ID 와 클라이언트의 secrets 을 제공한다.