oAuth2로 소셜 로그인 구현하기 (1)

이상혁·2024년 3월 16일
0

쇼핑몰 프로젝트를 진행하면서 유저와 관련된 부분을 맡아서 구현을 하게 되었다.
그 중에 소셜 로그인을 구현하는데 oAuth를 통해서 구현을 하고자 한다.

구글링을 통해서 소셜로그인을 구현을 하려고 하는데 잘 되지 않았다 ㅜㅜ
그래서 oAuth의 구동원리부터 공부하고 이해하면서 구현을 하려고 한다.

oAuth2란

요즘 어플리케이션이나 웹 사이트를 보면 소셜로그인을 통한 로그인이 대부분 있다.

이 소셜 로그인의 가장 쉬운 방법은 사용자에게 아이디와 비밀번호를 받아서 소셜 로그인을 어플리케이션에서 진행을 하고 소셜의 유저 정보를 받아오는 것이다.

하지만 이러한 방법은 절대 안전하지 않다.
사용자가 어플리케이션을 신뢰하지 못 할 수도 있고 해커가 애플리케이션을 해킹했을 때 정보가 유출이 된다.
그리고 소셜회사 또한 불안할 것이다.

이를 해결하기 위한 방법이 있지만 대표적인 것이 oAuth이다.
oAuth는 구글이나, 페이스북등 다양한 플랫폼에 특정한 사용자의 데이터에 접근을 하기 위해서 사용자의 접근 권한을 위임 받을 수 있는 표준 프로토콜이다.

oAuth2의 용어정리

처음 oAuth2를 알아 볼 때, 용어가 헷갈렸었다.
어떤 용어가 사용자를 의미하고 어떤 용어가 플랫폼을 의하는 지를 잘 몰랐다.
그래서 구동원리를 알아보기 전에 용어 정리를 하고자 한다.

Resource Owner

resourece owner는 우리의 서비스를 이용하는 사용자이자 플렛폼의 리소스 권한자이다.
즉, 소셜 로그인을 통해서 우리 서비스에 로그인 하려는 사용자이다.

Authorization Server & Resourece Server

authorization server는 resource owner을 인증하고 accessToken을 보내주는 역할하는 서버이고 Resource Server는 resource owner의 리소스를 가지고 있는 서버이다.
이 서버는 같은 플랫폼이다. 즉, 로그인 서비스를 제공하는 구글이나 카카오, 네이버 같은 플랫폼에서 이 두 개의 서버의 역할을 다하는 것이다.

Client

Resource Server에 자원을 이용하고 하는 서비스이다.
우리가 개발하는 애플리케이션, 서비스가 될 것이다.

oAuth2의 동작 원리

1 ~ 2
사용자, resource owner가 우리가 만든 서비스 client에서 소셜 로그인을 한다.
그러면 client는 authorization server에게 필요한 파라미터를 담은 url에 요청을 보낸다.

3 ~ 4
authorization server는 쇼셜 로그인 화면을 보여주고 사용자는 아이디와 비밀번호를 통해서 로그인을 한다.

5 ~ 6
인증을 성공하면 Authorization server는 제공받은 redirect url로 사용자를 리다렉션을 시키는데 Authorization code를 담아서 보내준다.
이 Authorization code는 AccessToken을 받기 위해서 사용이 된다.

7 ~ 8
client는 Authorization Server에 Authorization code를 전달하고 Access Toke을 응답받는다.
client는 Access Token을 받고 Resouce Server에서 자원을 사용할 때 이 Token을 사용한다.

9
위 과정을 성공적으로 마치면 사용자에게 로그인 성공을 알려준다.

10 ~ 13
이후에 사용자가 Resource Server의 리소스가 필요한 기능을 할 때, client에 요청을 한다.
client는 access token을 이용해서 Resource server에 접근을 하고 리소스를 가지고 서비스를 제공한다

profile
개발 공부 하기 위해 만든 블로그

0개의 댓글