[TIL] 2020. 07. 31. Oauth_SocialLogin

harrycod·2020년 7월 31일
2

TIL

목록 보기
85/110
post-thumbnail

오늘 배운 것

Oauth & Social Login

1. 개요

  • 로그인 기능을 구현하기 위해 직접 서버를 만들어 인증하는 방식 대신, 인증을 중개해주는 메커니즘인 Oauth 방식을 사용해 Social Loigin 기능을 구현할 수 있다.
  • 사용자 정보를 가지고 있는 웹 서비스(google, facebook, github 등)에서 사용자의 인증을 대신 처리해주고, 접근 권한에 대한 토큰을 발급하면, 이를 이용해서 해당 웹서비스 API를 사용해 사용자 정보를 받아오거나 이를 이용해 session을 부여해 로그인 상태를 유지시킬 수 있다.

2. 대략적인 작동 순서

github 소셜 로그인을 기준으로 대략적인 순서를 정리한 것이다.

github의 개발자 설정에서 Oauth Apps을 등록을 한 뒤에 사용할 수 있다. 링크

  1. 사용자가 홈페이지로 들어가 소셜 로그인 버튼을 누른다.
  2. 소셜 로그인 버튼은 다음과 같이 github의 인증 페이지로 링크된다. Ouath Apps를 등록하면 발급되는 client_id는 쿼리 값으로 필수적으로 채워줘야한다. https://github.com/login/oauth/authorize?client_id="Fill_ME_IN"
  3. 사용자가 인증을 성공적으로 마치면, Oauth Apps를 등록할 때 지정해두었던 Authorization callback URL으로code query 값을 가지고 링크되어진다. https://CALLBACK_URL.com/?code="어쩌고 저쩌고"
  4. 웹 서비스에 client_id와 client_secret, code 쿼리를 채워서 API POST요청을 한다.https://github.com/login/oauth/access_token?client_id="Fill_ME_IN"&client_secret="Fill_ME_IN"&code="Fill_ME_IN"
  5. 그에 대한 응답으로 access_token이 발행되고,
  6. access_token을 header로 설정한 뒤 //api.github.com/user로 API GET 요청을 보내면 사용자 정보를 받아 올 수 있다.
  7. 이를 이용해 인증이 완료 된 사용자에 대해 세션을 부여하면 된다.

참고

profile
다 늦은 밤, 달밤의 개발일기

0개의 댓글