221125 TIL OAuth 2.0 알아보기

요즘 대부분의 웹/앱 서비스를 사용하면 필수로 만나게 되는 기능이 있다. 바로 해당 서비스의 사이트에 회원가입하지 않고도 다른 서비스의 계정을 가져와 사용할 수 있도록 하는 기능이다. 로그인을 하려고 하면 하단에 '카카오 계정으로 로그인', '네이버 계정으로 로그인' 등과 같이 버튼만 클릭하면 간편하게 로그인할 수 있는 기능을 쉽게 접할 수 있다. 오늘은 그 기능을 프로젝트에 적용하기 위해 방법들을 찾아봤다.

위와 같이 타 서비스의 계정을 사용해서 인증하는 방식을 OAuth 2.0 인증 방식이라고 한다.

 

OAuth2.0

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

 

간단히 말해 자신의 서비스에서 사용자 인증을 구글이나 카카오의 계정으로 사용자를 인증하려고 할 때, OAuth를 바탕으로 외부 서비스(google, kakao 등등)의 특정 자원을 접근하고 사용할 수 있다.

OAuth 2.0 프로토콜을 구성하는 4가지의 역할

Resource owner(자원 소유자) : Resource server(구글, 페이스북, 카카오 등)의 계정을 소유하고 있는 사용자를 의미한다.

Resource Server : Client가 제어하고자 하는 자원을 보유하고 있는 서버를 의미한다.

Client : Resoure Server에 접속해서 정보를 가져오고자 하는 클라이언트를 의미한다.

Authorization Server : 권한 서버, 인증/인가를 수행하는 서버로 클라이언트의 접근 자격을 확인 하곡 Acces Token을 발급하여 권한을 부여하는 역할을 수행한다.

Authorization Code Grant

OAuth 2.0의 4가지 인증 방법 중 Authorization Code Grant 방식을 살펴보자

  설명
Authorization Code Grant - Client가 다른 사용자 대신 특정 리소스에 접근을 요청할 때 사용

- 리소스 접근을 위해, Authorization Server에서 받은 권한 코드로 리소스에 대한 액세스 토큰을 받는 방식
- 다른 인증 절차에 비해 보안성이 높기에 주로 사용된다

 

 

  • 클라이언트가 파리 미터로 클라이언트 ID, 리다이렉트 URI, 응답 타입을 code로 지정하여 권한 서버에 전달합니다. 정상적으로 인증이 되면 권한 코드 부여 코드를 클라이언트에게 보낸다.
  • 성공적으로 권한 부여 코드를 받은 클라이언트는 권한 부여 코드를 사용하여 access token을 권한 서버에 추가로 요청합니다. 이때 전달받은 redirect_url로 Authorization Code를 전달한다.
  • Authorization Code는 권한 서버에서 제공하는 API를 통해 Access Token으로 교환된다.
  • 마지막으로 받은 access token을 사용하여 리소스 서버에 사용자의 데이터를 보낸다.

 

오늘은 OAuth2.0에 대해서 알아봤는데 내일은 카카오 로그인, 네이버 로그인을 직접 구현해보자


참고 : https://blog.naver.com/mds_datasecurity/222182943542