[Web] oAuth

unhyif·2022년 6월 7일
0

Web

목록 보기
1/4

Firebase 소셜 로그인 기능을 구현하고 있는데, 그의 원리가 되는 OAuth가 궁금했다.
벨로그에서 구글 로그인을 하려는 상황을 가정하고 관련 내용을 정리해 보겠다.

OAuth

사용자가 비밀번호를 노출하지 않아도 자신의 정보가 서비스들 간에 공유될 수 있도록 하는 프로토콜

로, Access token을 발급하는 것이 목적이다.

주체

  • Resource owner: 사용자
  • Client: 외부 서비스를 이용하려는 사이트 e.g 벨로그
  • Resource server: Client가 필요로 하는 데이터를 갖고 있는 서버 e.g. 구글
  • Authroization server: 인증 처리를 하는 서버 e.g. 구글

과정

1. Register

Resource server에 Client를 사전 등록하는 과정

  • Client ID: 외부에 노출되도 무방함
  • Client Secret: 외부에 노출되면 안됨
  • Authorized redirect URIs: Resource server가 Client에게 Authorization code를 전달할 주소

즉, Google cloud platform에 벨로그 서비스를 사전 등록해야 한다.

2. Resource owner의 승인

1) 사용자가 구글 로그인 버튼을 클릭하면, Client ID/scope/redirect uri로 이루어진 구글 관련 주소로 이동함
cf) scope: 이메일, 이름 등

2) 구글(Resource server)은 사용자를 로그인시킴

3) 구글은 전달 받은 Client ID와 redirect uri를 확인하고, register된 정보와 일치한다면 사용자에게 벨로그가 scope 관련 권한을 가질 수 있도록 할 것인지 승인을 구함

3. Resource server의 승인

4) 사용자가 승인했다면, 구글은 Authorization code를 발급하고 사용자를 해당 코드가 결합된 redirect uri로 이동시킴

5) 벨로그(Client)는 전달 받은 Authorization code와 Client ID/Client Secret/redirect_uri가 결합된 구글 관련 주소로 Access token 발급을 요청함

4. Access token 발급

6) 구글은 Authroziation code를 발급해 주었던 사용자와 scope에 대한 Access token을 발급하고, 벨로그에게 전달함

7) 벨로그는 해당 토큰을 내부적으로 저장하고, 구글이 가진 사용자 데이터에 접근해야 할 때마다 Access token을 사용함

5. Refresh token 발급

보통, 처음 Access token을 발급 받을 때 Refresh token도 같이 발급되는 경우가 많다.
Access token의 기한이 만료되면 Refresh token을 이용하여 새로운 Access token을 발급 받는다.


Reference: https://www.youtube.com/playlist?list=PLuHgQVnccGMA4guyznDlykFJh28_R08Q-

0개의 댓글