개발자의 길

[Backend] OAuth 2.0 이란 무엇인가?

토아드 2022. 5. 1. 18:44
반응형

인터넷을 이용하다 보면 최근에는 대부분의 사이트에서 카카오톡으로 로그인, 네이버로 로그인 등의 서비스를 지원을 한다. 이때 사용되는 프로토콜이 OAuth 2.0 이라는 프로토콜인데, OAuth 는 위키에서 다음과 같은 의미를 가지고 있다.

 

OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다.

 

간단히 말하면 특정 사이트의 아이디 비밀번호 입력 없이, 신뢰 가능한 다른 사이트들의 정보를 제공함으로써 회원 서비스를 이용하게 해줄 때 사용되는 표준이다.

 

티스토리에서 카카오톡으로 로그인 하는 경우를 예를 들어 설명해 보겠다.

 

OAuth 2.0 참여자

1. Resource Server : 유저 정보를 가지고 있는 서버( 카카오 서버 )

2. Resource Owner : 유저 정보의 소유권자 ( 카카오 가입자 )

3. Clinet : 유저 정보를 요구하는 웹사이트, 어플리케이션 ( 티스토리 )

 

OAuth 2.0 과정

1. Client 등록

 Resource Server 에 인증 정보 요청을 할 Client 를 등록을 한다. 이 과정에서 아래 3가지 정볼르 전달받는다.

 - Client ID : Resource Server 에서 Client 를 구분하는 식별자

 - Client Secret : Client ID 에 대한 비밀키. 

 - Authorized redirect URL : Authorization Code 를 전달받을 리다이렉트 주소

 

2. Resource Server 인증 후 Client 에게 액세스 토큰전달

Resource Server 가 인증을 거치면( 카카오 로그인 후 완료 ), Client 에게 Authorized redirect URL 로 Authorization Code 를 전달해 준다. Client 는 이 Code 와 Client ID, Client Secret, Redirect URL 값을 Resource Server 에게 전달해 줌으로써 Access Token 을 전달받는데, Client 에서는 이 Access Token 을 Client 의 서버에 유지하며 유저의 로그인 상태를 유지한다. 이때 등록한 Redirect URL 이 아니면 Resoure Server 는 인증을 거부하게 된다.

 

3. Access Token 사용

이제 Client 웹사이트나 어플리케이션에서는 전달받은 Access Toekn 을 유지하고, 유저 인증정보가 필요한 HTTP API 요청에 전달받은 Access Token 을 전달함으로써 인증이 필요한 API 를 사용하게 된다.

 

4. Refresh Token

 OAuth 를 지원하는 Resourece Server 마다 방법은 다르지만, Refresh Token 을 Client 에게 전달해 줌으로써 사용 만료기한이 존재하는 Access Token 을 새로 받을 수 있도록 한다. 클라이언트에서는 Access Token 이 만료하게 되면 Refresh Token 을 Resource Server 에 다시 전달함으로써 새로운 Access Toekn 을 받게된다.

 

반응형