[TIL] OAuth & Social Login

이재훈·2020년 11월 8일

자바스크립트를 배우고 있는 예비개발자입니다.
배운 것을 토대로 작성하였으나, 수정사항이나 미비된 점이 있다면 가르침 부탁드립니다!

What I Learned Today :)

  🌱  OAuth & Social Login

OAuth 2 란?

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

위의 위키백과 설명을 쉽게 풀어보자면 OAuth는 인증을 중개해주는 메커니즘이다.
이미 사용자의 정보를 가지고 있는 웹 서비스(구글, 카카오톡, 페이스북 등)에서 사용자의 인증을 대신해주고, 접근 권한에 대한 Access Token을 발급한 후, 이를 이용해 사용자가 이용하고자 하는 서버에서 인증이 가능해진다.

이렇듯 우리들이 웹이나 앱에서 흔히 찾아볼 수 있는 소셜 로그인 인증 방식은 OAuth 2의 기술을 바탕으로 구현된다.

하지만 OAuth는 인증(Authentication)만 안전하게 중개하는 역할만 하며, 접근 권한(Authorization)까지 해결해주는 것은 아니다.

따라서 이 둘의 차이를 알고 OAuth를 접근하는게 맞을 것 같다.
아래에서 이 둘의 차이를 알아보자.

인증(Authentication)과 접근 권한(Authorization)의 차이

인증이란 열쇠, 입장권, 사원증과 같은 것으로 사용자 인증이 되면 서비스를 이용할 수 있게 된다.
권한 관리란 인증은 이미 완료된 상태이고 그 인증된 사용자를 구분하는 개념이다.

자, 우리가 지하철을 타러간는 상황을 연출해보자


위의 그림을 보면 예상이 되겠지만 개찰구 -> 카드 -> 승강장 진입의 과정은 인증(Authentication)과 같다고 할 수 있다.
그러면 이제 우리는 지하철을 기다렸다가 지하철 안에 탑승을 했다고 가정을 해보자.

우리는 정당하게 사용자 인증을 거쳐 지하철까지 들어왔다. 이제는 권한의 문제인데, 지하철 좌석을 살펴보면 노약자석, 임산부 배려석을 본 적이 있을 것이다. 바로 이 표식들과 해당 좌석에 "누가누가 앉으세요~"라는 것이 접근 권한(Athorization)이라고 할 수 있다.

또 다른 예제를 간단히 적어보자면,
어떠한 네이버 카페 같은 웹사이트에 접속해 로그인을 했다고 하자. 회원가입, 로그인을 하는 순간 사용자 인증은 끝났다.
그 후 글쓰기 권한, 수정 권한, 게시글 관리 권한 등등 회원의 등급 별로 가능해지는데 이것을 접근 권한이 다르기 때문이다.

따라서 OAuth는 인증정보만 다루고, 사용자가 로그인등을 요청한 서버에서는 접근권한을 다룬다.

[참고]
이렇게 사용자가 로그인 등 해당 사이트에 대한 접근 권한을 요청하면 이러한 접근 권한을 다루는 곳은 Athorization 서버라 부르며, 이 Athorization 서버에서 이 사용자에 대한 인증을 확인하기 위해 사용자 정보를 요청하고 그 인증 정보를 가지고 있는 서버는 Resource(naver, payco 등) 서버라고 한다.

Access Token

  • 보호된 Resource에 접근할 때 권한 확인욕으로 임의의 문자열 형태
  • Athorization 서버에서의 사용자 인증 요청을 받은 Resource 서버는 사용자 정보가 확인되면, 사용자가 원하는 정보를 가져오기 희망하는 자료에 접근하기 위한 access token을 Athoriztion 서버에 발급
  • 해당 Access Token으로 원하는 자료를 요청 및 제공받을 수 있음.

아래에서 더 자세히 살펴보도록 하겠다.

OAuth 2 의 작동 방식

자주 사용되어지는 인증 방식 중 payco가 요즘 눈에 띄게 보인다. 직접 사이트에 들어가 어떤 방식으로 구현이 되는 것인지 참고해보았다.

OAuth 2 인증 방식

OAuth 2 프로세스

  • 1~5 단계는 Authorization Code 발급 요청 URL을 통해 진행

  • 7~8 단계는 서비스에서 callback URL 을 통해 전달받은 Authorization Code를 사용하여 Access Token 요청 API를 통해 진행할 수 있음

  • 8 단계에서 발급받은 Access Token은 서비스(Authorization 서버)에서 자체적으로 저장, 관리해야 함

  • 10~11 사용자의 서비스 요청 시 회원정보가 필요하다면 Access Token을 사용해 API를 호출할 수 있음

참고: 페이코(Payco) 공식 홈페이지
profile
코딩에서 인생을 배우다.

0개의 댓글