OAuth 2.0

taehoon·2023년 11월 22일

Resource Owner (owner) = 자원의 소유권을 지닌 주체 = 유저
Resource Server (server) = 자원을 보관하는 주체 = 외부 서버
*자원 = 회원정보(아이디, 비밀번호...)
Client = 외부 서버에서 기능을 빌려오려는 주체 = 우리의 서버

Resister

Client는 Resource Server에 미리 등록을 해놓아야 한다.

서버 URL과 (인증을 마치고 accessToken을 전해줄)callBackUrl을 적고
Client Id와 Client Secret을 받는다.

절차

  1. owner가 client를 통해서 server의 기능을 이용하려 할 때,
    client는 owner를 server의 로그인 창으로 redirect한다.
    (redirect url에는 id,권한의 범위, callback Url에 포함된다.)

  1. server는 owner에게 로그인 절차를 거치고, (owner를 특정하는) user id 와 url에 포함된 권한의 범위를 얻는다.
    client가 owner의 권한을 사용하려고 한다는 것을 알리고,
    동의를 얻으면 몰래 authorization code를 심는다.

  1. server는 owner를 callBackUrl에 코드를 심고 해당 url로 Location(강제 이동) 시킨다.
    client는 server가 몰래심은 코드를 확인하고 authorization code를 획득한다.

  1. 이제 client는 client id,client secret, code를 가지고
    server에 접속하면 server는 authorization code를 지우고 user id에 해당하는 access token을 생성하고 발급한다.
    (이 token은 user id에 해당하는 유저의 권한 범위에 해당하는 권한을 부여하는 엑세스 키이다. )

  1. client는 access token을 내부에 저장하고 이 토큰을 어떻게 전달하고 API에서 데이터를 받아오는지는 API마다 다르기 때문에 찾아봐야한다.

refresh token

access token은 수명이 짧고 수명이 다하면 재발급 받아야 하는데
수명이 긴 refresh token이 이를 가능하게 해준다.
server에서 처음 access token을 줄 때 refresh token을 함께 주고
access token으로 접근할 수 없으면 refresh token을 보내서 access token을 다시 발급 받는다.

token을 탈취당하더라도 위험을 줄이기 위해 access token의 수명을 짧게 설정한다.

profile
건강

0개의 댓글