OAuth 2.0

회사 서비스에도 OAuth 2.0이 직접 구현되어져있다. (물론 표준과 살짝 다른걸로 알고 있지만...)

내부 스터디를 통해 OAuth 2.0에 대해 배웠지만... 그래도 이게 정확히 무엇이라도 단언할 수가 없다.

아직 제대로 이해를 하지 못했기 때문에 발생하는 현상인것 같다.

그런 의미에서 복습 겸 OAuth 2.0에 대하여 간략하게 정리하고자 한다.

OAuth는 무엇일까?

OAuth 2.0을 알아보기에 앞서, OAuth는 뭘까? 뭐길래 2.0이 붙어있는걸까?

OAuthOpenID Authentication, 해석하면 대강 공개된 아이디를 통한 인증 정도가 되겠다.

의역한거라 이상하게 느껴질수도 있지만 그냥 넘어가자. 쉽게 말해 비밀번호를 제공하지 않고 접근 권한을 다른 앱에서 부여한다 라고 생각하면 된다.

OAuth 2.0은 보안적인 취약점을 해결하기 위해 버전 업데이트가 된 것이다.

대략적인 과정

자, 우리가 SNS 로그인하는 과정을 생각해보자.

  1. 네이버 로그인 버튼을 누른다.

  2. 네이버 로그인 화면으로 이동한다.

  3. 로그인하면 어떤 정보를 넘겨줄지 정한다.

  4. 넘겨주기로 한 정보가 해당 사이트로 넘어온다.

  5. 로그인 성공!

앞으로 설명할 OAuth 2.0의 과정은 이 5가지 과정에서 전부 일어난다.

Access Token

엑세스 토큰은 OAuth의 핵심이다.

우리가 네이버 로그인을 진행하면(네이버 회원임을 인증하면) 네이버는 나와 관련된 Access Token을 발급해준다.

근데 여기서 문제가 생긴다. 우리는 네이버 로그인 창에서 인증을 했다...

액세스 토큰이 필요한 곳은 네이버 창이 아니라, 내가 가입할 웹사이트다.

토큰을 어떻게 전달해줄까?

정답은 redirect다. url에 redirect_url를 묶어줌으로써 액세스 토큰을 전달해준다.

oauth-naver

근데 여기서 문제가 생긴다.

redirect_uri는 로그인 하기전에 url을 맘대로 조작할 수 있다.

그래서 OAuth 2.0을 제공하는 서비스에게 redirect를 허용할 도메인을 등록해주어야 한다.

이렇게 하면! 드디어 Access Token을 발급받을 수 있게 된다.

이 액세스 토큰으로 정보를 요청하면 네이버 측은 정보를 제공해준다.

사실 더 자세한 과정이 있지만

액세스 토큰을 발급받기 위해 Authorization code를 발급한다던가,

Refresh Token으로 액세스 토큰을 재발급한다던가 하는 과정이 많이 빠져있지만,

페이코 개발자 센터에서 제공해주는 다이어그램으로 대신하겠다.

/images/TIL/CS-Network/oauth-payco.png

etc

OAuth Connect 라는게 있다고 하는데... 나중에 알아보자.

Last Updated: