Oauth2란?
Oauth2는 인증(Authentication) 과 인가(Authorization)를 처리하기 위한 개방형 표준 프로토콜이다.
사용자가 자신의 계정 정보를 제 3자 애플리케이션과 안전하게 공유할 수 있게 해주는 방법이다.
이 과정에서 사용자의 비밀번호를 직접 노출시키지 않고, 대신 액세스 토큰(Access Token)을 사용하여 권한을 부여한다.
예: 구글 로그인시 로그인 화면이 뜨고, “이 앱이 당신의 이메일과 프로필 정보에 접근하도록 허용하시겠습니까?” 라는 메세지가 뜬다. 이것이 바로 Oauth2.0이 작동하는 방식이다.
Oauth2의 주요 구성 요소
-
Resource Owner
-
Client
- 사용자의 데이터에 접근하려는 애플리케이션
예: 내가 만든 SpringBoot 애플리케이션
-
Authorization Server
- 사용자를 인증하고, 클라이언트에게 액세스 토큰을 발급해주는 서버
예: 구글의 인증 서버
-
Resource Server
- 사용자의 데이터를 실제로 가지고 있는 서버
예: 구글의 사용자 정보 API 서버
-
Access Token
- 클라이언트가 리소스 서버에 접근할 때 사용하는 일종의 “열쇠”이다. 유효기간이 있고, 보안이 중요하다.
-
Refresh Token (선택적)
- 엑세스 토큰이 만료됐을때 새로 발급받기 위한 토큰
Oauth2의 Authorization Code Grant (garnt Type)
- 정의: 사용자의 인가 서버에서 승인하면 인가 코드를 받고, 이 코드를 사용해 액세스 토큰을 발급받는 방식
- 특징
- 클라이언트가 서버 측에서 동작할 때 적합하다.(예: Spring 웹 애플리케이션)
- 보안성이 높다. 백엔드에서 처리되기 때문에 토큰이 바로 브라우저로 노출되지 않는다.
- Refresh Token을 지원한다.
- 사용 사례: 소셜 로그인 (구글, 페이스북 등), 웹 애플리케이션