[Network] Oauth2.0 이란?

김지환·2023년 2월 18일
0

oauth2.0 이란?

oauth2.0 공식 홈페이지에서 발췌했다.

OAuth 2.0 is the industry-standard protocol for authorization. OAuth 2.0 focuses on client developer simplicity while providing specific authorization flows for web applications, desktop applications, mobile phones, and living room devices. This specification and its extensions are being developed within the IETF OAuth Working Group.

간단히 말해서 인증에 대한 산업 표준 프로토콜이라고 보면 된다. 사용자는 유저의 정보를 authorization server, resource server를 통해서 인증을 받고 권한을 위임받게 된다. 구글, 카카오 로그인 등이 바로 이러한 원리로 이루어지는 것이다.

oauth2.0 역할

oauth2.0 은 각각의 역할이 있다.

Resource Owner: 보호된 리소스를 갖고 있거나 접근에 권한을 부여할 수 있는 유저 혹은 시스템 말인 즉슨 홈페이지에 로그인을 하려고 하는 유저를 예로 들 수 있겠다.

Client: 보호된 리소스에 접근을 요청하는 시스템을 의미한다. 리소스에 접근하기 위해서는 access token을 가지고 있어야한다. 유저가 홈페이지에 로그인을 하려고할 때 구글 로그인을 누르면 구글 로그인창이 팝업 될것이다. 그 후 본인의 id, password로 로그인을 하면 access token이 발급되게 되는 것이다.

Authorization Server: 클라이언트로부터 액세스 토큰 요청을 수신하고 성공적으로 로그인이 됐을 때 access token을 반환한다. 이 때 조건에 따라서 refresh token을 같이 반환해 주기도 한다 refresh token은 access token 보다 만료 시간이 길어서 access token이 만료 됐을 때 재발급을 할 때 사용하게 된다. 또한 access token이 아닌 authorization code를 반환해 주기도 하는데 authorization code를 통해서 access token을 받을 수 있다.

Resource Server: 실제 유저의 리소스 정보를 가지고 있는 서버이다. 올바른 access token으로 접근을 했을 때 비로서 유저 리소스를 얻을 수 있게 된다.

oauth2.0 스코프

oauth2.0 에는 스코프라는 개념이 있다. access token을 발급 받았다고 해서 유저의 모든 정보를 받아올 수 있는 것이 아니고 정해진 스코프 안에서만 받아올 수 있다.

Authorization Server는 access token을 발급할 때 이 scope를 정책에 맞게 설정하여서 반환해 주게 된다.

구글 oauth2.0 플레이그라운드를 이용하여서 실제 어떤 식으로 사용되는지 확인해 볼 수 있다.

사용자가 접근을 원하는 scope를 직접 선택하여서 authorization server에 요청을 하면 이에 따라서 authorization code를 발급 이를 토대로 access token을 받아온 일련의 과정이다.

나같은 경우는 아래와 같은 스코프를 설정했다.

"scope": "https://www.googleapis.com/auth/cloud-platform https://www.googleapis.com/auth/cloud-platform.read-only", 

oauth2.0 인증 절차

인증 절차는 4가지 인증절차 방식이 존재한다.

  1. 권한 부여 코드 승인

  1. 암시적 승인

  1. 리소스 소유자 암호 자격 증명

  1. 클라이언트 자격증명

Reference

https://itwiki.kr/w/OAuth

profile
Developer

0개의 댓글