<aside> 💡 세션, 토큰(JWT)으로 하는 인증방식은 해봤다! 이번에는 요즘 HOT 한 방식인 OAuth 인증방식을 해보자!

</aside>

GitHub를 이용한 OAuth 인증방식을 구현해 보자!

OAuth이란!?

전통적인 인증방식은 직접 작성한 서버에서 인증절차를 처리하게 된다. 하지만, 요즘 Google로 로그인, Kakao로 로그인 과 같이 이미 정보를 가지고 있는 서버를 통해 대신 로그인 하는 걸 많이 경험해 보았을 것이다.

이렇게 사용자의 정보를 가지고 있는 웹서비스에서 인증을 대신해주고 토큰을 발급, 그 토큰으로 다시 AccessToken을 발급해주어 이를 이용해 서버에서 인증이 가능하게 되는, OAuth는 인증을 중개해주는 메커니즘! 이라고 할 수 있다.

사전적인 의미로는 보안 된 리소스에 액세스하기 위해 클라이언트에게 권한을 제공(Authorization)하는 프로세스를 단순화하는 프로토콜 중 한 방법!이라고 할 수 있다.

⭐️OAuth's Flo~w⭐️

  1. user(Resource Owner)가 client(이용하고자 하는 앱)에 접속을 하려고 한다.
  2. client는 user를 Authorization server로 redirect한다. (보통 여기서 구글 로그인 창이 뜬다.)
  3. Resource Owner에게 권한을 줘도 되는지에 대한 요청에 user가 응답을 한다.
  4. Authorization server는 client에게 athorization code를 발급해주고,
  5. client는 발급 받은 athorization code로 Authorization server에게 가서 Access Token을 발급받는다.
  6. 이제 발급 받은 Access Token을 이용하여, client는 server에 접근하여 부여된 권한 만큼 요청을 보낸다.
  7. server는 들고온 토큰을 보고 client의 요청에 응답한다.