OAuth2.0이란? (구글 계정으로 로그인)

요즘은 웬만한 웹사이트에서는 구글 계정으로 로그인하거나 가입할 수 있습니다. 웹사이트의 자체 회원가입뿐만 아니라 구글, 페이스북, 네이버, 카카오 등의 계정으로도 간단하게 가입 또는 로그인할 수 있도록 구현하기 때문입니다. 이를 가능하게 하는 게 OAuth2.0 입니다.

OAuth란?

OAuth 2.0은 인터넷에서 사용자가 계정 정보를 직접 공유하지 않고도 웹사이트들이 해당 계정에 접근할 수 있게 해주는 표준 프로토콜입니다. 

 

예를 들어, 어떤 웹사이트에 로그인할 때 해당 웹사이트는 자체적인 로그인 시스템을 만들지 않고 구글이나 페이스북 같은 이미 신뢰할 수 있고 사용자가 많은 서비스를 이용해서 인증을 처리할 수 있습니다. 사용자는 구글 또는 페이스북 아이디로 해당 사이트를 이용할 수 있습니다. 이 과정에서 OAuth 2.0 프로토콜이 사용됩니다.

 

OAuth는 Open Authorization의 약자로, 권한을 부여한다는 의미를 담고 있습니다. OAuth 2.0은 인증(Authentication)을 제공하는 것은 아니라 권한(Authorization)을 제공하는 역할을 합니다. 즉, OAuth 2.0는 사용자가 누구인지 확인하는 게 아니라 사용자가 특정 웹사이트에 어떤 권한을 부여하는지에 대한 기능을 수행합니다.

 

OAuth 2.0 예시

구글(Google) 계정을 이용해서 다른 웹사이트에 로그인하는 경우를 기준으로 OAuth 2.0이 사용되는 과정을 살펴보겠습니다.

 

예를 들어, geeksforgeeks라는 IT 기술 정보를 제공하는 웹사이트가 있습니다. 사용자는 웹사이트에 방문하면 구글 계정으로 로그인하는 버튼을 볼 수 있습니다. 사용자가 이 버튼을 클릭하면 구글의 OAuth 2.0 인증 서버로 리다이렉트 됩니다.

 

OAuth 2.0 예시

 

구글 인증 서버에서는 사용자에게 구글 계정의 로그인 화면을 제공합니다. 사용자는 자신의 구글 계정을 이용해서 로그인할 수 있습니다. 

 

구글 계정 로그인

 

 

구글 인증 서버는 사용자에게 geeksforgeeks가 요청하는 권한 (이름, 이메일 주소, 프로필 사진 등)에 대한 동의를 요청합니다. 이처럼 계정에 대한 인증(Authentication)이 아닌 권한(Authorization)을 제공하는 것을 확인할 수 있습니다.

 

정보 제공에 동의하면 구글 인증 서버는 geeksforgeeks에 인증 코드를 발급합니다. geeksforgeeks는 인증 코드를 받아 구글 인증 서버에게 전송하고 액세스 토큰을 요청합니다. 구글 인증 서버는 인증 코드를 확인하고 액세스 토큰을 geeksforgeeks에 발급합니다.

 

geeksforgeeks는 이 액세스 토큰을 이용해서 구글의 리소스 서버에 접근하고 사용자가 부여한 범내에서 사용자 정보를 요청합니다.

 

geeksforgeeks는 이 정보를 이용해서 사용자를 인증하고 로그인 또는 가입 절차를 완료합니다. 이제부터 사용자는 구글 계정을 이용해서 geeksforgeeks 웹사이트를 이용할 수 있습니다.

 

OAuth2.0 사용 이유

1. OAuth 2.0를 사용하면, 사용자는 자신의 계정 정보를 직접 공유하지 않고도 서드파티 애플리케이션에 권한을 부여할 수 있습니다.

 

2. 사용자 입장에서 여러 웹사이트를 사용하는데 이미 가지고 있는 계정을 활용할 수 있기 때문에 편리합니다.

 

3. 개발자 입장에서 인증과 권한 부여에 관한 복잡한 로직을 직접 구현할 필요 없이 이미 검증된 프로토콜을 활용할 수 있습니다. 개발 과정이 단순화됩니다.

반응형

댓글

Designed by JB FACTORY