OAuth 2.0
회사 서비스에도 OAuth 2.0
이 직접 구현되어져있다. (물론 표준과 살짝 다른걸로 알고 있지만...)
내부 스터디를 통해 OAuth 2.0
에 대해 배웠지만... 그래도 이게 정확히 무엇이라도 단언할 수가 없다.
아직 제대로 이해를 하지 못했기 때문에 발생하는 현상인것 같다.
그런 의미에서 복습 겸 OAuth 2.0
에 대하여 간략하게 정리하고자 한다.
OAuth는 무엇일까?
OAuth 2.0
을 알아보기에 앞서, OAuth
는 뭘까? 뭐길래 2.0이 붙어있는걸까?
OAuth
는 OpenID Authentication
, 해석하면 대강 공개된 아이디를 통한 인증
정도가 되겠다.
의역한거라 이상하게 느껴질수도 있지만 그냥 넘어가자. 쉽게 말해 비밀번호를 제공하지 않고 접근 권한을 다른 앱에서 부여한다
라고 생각하면 된다.
OAuth 2.0
은 보안적인 취약점을 해결하기 위해 버전 업데이트가 된 것이다.
대략적인 과정
자, 우리가 SNS 로그인하는 과정을 생각해보자.
네이버 로그인 버튼을 누른다.
네이버 로그인 화면으로 이동한다.
로그인하면 어떤 정보를 넘겨줄지 정한다.
넘겨주기로 한 정보가 해당 사이트로 넘어온다.
로그인 성공!
앞으로 설명할 OAuth 2.0의 과정은 이 5가지 과정에서 전부 일어난다.
Access Token
엑세스 토큰은 OAuth
의 핵심이다.
우리가 네이버 로그인을 진행하면(네이버 회원임을 인증하면) 네이버는 나와 관련된 Access Token
을 발급해준다.
근데 여기서 문제가 생긴다. 우리는 네이버 로그인 창에서 인증을 했다...
액세스 토큰이 필요한 곳은 네이버 창이 아니라, 내가 가입할 웹사이트다.
토큰을 어떻게 전달해줄까?
정답은 redirect다. url에 redirect_url를 묶어줌으로써 액세스 토큰을 전달해준다.
근데 여기서 문제가 생긴다.
redirect_uri는 로그인 하기전에 url을 맘대로 조작할 수 있다.
그래서 OAuth 2.0
을 제공하는 서비스에게 redirect를 허용할 도메인을 등록해주어야 한다.
이렇게 하면! 드디어 Access Token
을 발급받을 수 있게 된다.
이 액세스 토큰으로 정보를 요청하면 네이버 측은 정보를 제공해준다.
사실 더 자세한 과정이 있지만
액세스 토큰을 발급받기 위해 Authorization code
를 발급한다던가,
Refresh Token
으로 액세스 토큰을 재발급한다던가 하는 과정이 많이 빠져있지만,
페이코 개발자 센터에서 제공해주는 다이어그램으로 대신하겠다.
etc
OAuth Connect
라는게 있다고 하는데... 나중에 알아보자.