OAuth 2는 특정 웹 서비스(Client)에서 구글과 같은 서비스(Resource Server, Authorization Server)의 기능을 이용할 때 사용한다.
여기서는 특정 웹 서비스를 쇼핑 웹이라하고 쇼핑 웹에서 구글의 기능을 사용한다고 가정하겠다.
Client 등록
쇼핑 웹(Client)에서 구글의 기능을 사용하려면 쇼핑 웹을 구글에 등록해야 한다.
보통은 등록을 하면 Client ID와 Client Secret, Authrized Redirect URI를 받는다.
Access 토큰 요청
사용자가 쇼핑 웹에 접속하고 여기서 구글의 어떤 기능을 사용하려면
URL에 client_id와 특정 기능을 나타내는 scope, redirect_uri를 넣어서 요청한다.
여기서 사용자가 구글에 로그인이 돼 있지 않다면 로그인을 먼저 하고 다시 요청한다.
구글은 등록된 Client ID가 있는지 확인하고 해당 ID의 리다이렉트 URI가 일치하는지 확인한다.
유효하다면 사용자에게 scope에 해당하는 기능을 쇼핑 웹에서 사용할 수 있게 할 것인지 권한을 묻는다.
허가 했다면 구글은 사용자가 Client ID의 웹에서 scope에 들어 있는 기능들을 쓸 수 있도록 허가했다는 것을 기록한다.
authorization 코드를 location 헤더로 보내서 쇼핑 웹에 리다이렉트 시키며
URL 파라미터를 통해 쇼핑 웹이 authorization 코드를 얻는다.
쇼핑 웹은 authorization 코드, redirect_uri, client_id, client_secret을 구글에 보낸다.
구글이 이를 확인하고 일치하면 access token을 발급한다.
구글은 기록했던 authorization 코드를 지운다.
Access 토큰 이용
쇼핑 웹은 데이터베이스에 access 토큰을 저장하고
이 토큰을 이용해서 구글의 기능을 이용할 수 있다.
구글은 이 토큰을 보고 특정 사용자가 쇼핑 웹에서 어떠어떠한 기능을 사용할 수 있도록 허가했다는 것을 알 수 있다.
Refresh 토큰
access 토큰은 유효기간이 있다.
만료된 access 토큰을 다시 받으려면 refresh 토큰을 이용해야 한다.
보통 refresh 토큰은 위 과정에서 access 토큰과 함께 받는다.
'HTTP' 카테고리의 다른 글
HTTPS에 대해서 (0) | 2021.03.30 |
---|---|
Fetch 기본 사용 방법 (0) | 2021.03.08 |
REST API에 대해서 (0) | 2021.03.03 |
주소 창 입력부터 렌더링까지 브라우저가 작동하는 과정 (0) | 2021.02.04 |
Express에서 cookie를 생성하는 방법 (1) | 2021.02.02 |