OAuth 에 대하여(5)

김하은·2022년 12월 10일
2

Project-Study

목록 보기
5/7
post-thumbnail

🎈Access token 발급후 refresh Token🎈

🚩refresh token 이란?

Access token 정해진 수명이 있다.
이 수명이 끝나면 api에 다시 접속 했을때
api가 데이터를 주지 않는다.
따라, 새롭게 다시 발급 받아야 한다.

하지만, 새롭게 다시 발급 받아야 하는 과정이 user 에게는 귀찮을수 있다
따라, 손쉽게 엑세스 토큰 값을 발급 받을수 있는 방법이 refresh Token 이다.

oauth 2.0 rfc 에 대해 검색을 하면 oauth 에 관한 문서를 볼수 있다.

해당 문서를 살펴보면

Client , Resource Server, Authorization Server 이렇게 3개의 분류로 나뉜다. (설명은 Resource Server 로 통일해서 함 )

문서를 보며 다시 한번 정리해 보았다.

A. Authorization Grant = 권한 획득, 허가
B. 리소스 서버가 토큰 발급. 리소스 서버가 발급 될때 리프레시 토큰 값도 같이 발급
C. 토큰값을 저장 해놓았다가 api를 호출할때는
access token 을 이용
D. 토큰을 이용해서 resource 를 가져온다.
E. access token 을 이용해서 api를 이용하고 있는데
F. 유효하지 않는 토큰 값이라고 error 가 난다. (access token 만료)
G. client 는 보관하고 있던 refresh token을 Authorization Server 에게 전달하면서
H. access token 을 다시 발급 받는다.

Refreshing an access token 에 대해 보면

googleapi.com 의 /token HTTP/1.1 의 path로
content-Type (form 에서의 post 방식 으로 전송 방식)
client_id / client_secret / refresh_token/ grant_type 아래와 같은 방식으로 보내는게 표준화 되어있다.

POST /token HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=your_client_id&
client_secret=your_client_secret&
refresh_token=refresh_token&
grant_type=refresh_token

이런식으로 전송하면 구글에서는
아래와 같은 json form 으로 return 해준다.

{
  "access_token": "1/fFAGRNJru1FTz70BzhT3Zg",
  "expires_in": 3920,
  "scope": "https://www.googleapis.com/auth/drive.metadata.readonly",
  "token_type": "Bearer"
}

여기 안에 새롭게 발급된 access_token 의 값과 ,
이 토큰 값이 유효한 시간 expires_in,

이러한 정보들이 담겨져 있다.


🍀 OAuth 의 좋은 점은 client 입장에서 제 3자인 Resource Server 를 통해 오너의 신원을 인증할수 있다.
누군가가 Resource Server 를 통해서 client 인 우리에게 access_token 을 전달하면
이를 통해서 Resource Server 의 고유한 식별자를 획득할수 있고,
일반적인 서비스에서 id 와 비밀번호가 하는 역할을 할수 있게 되는것이다.

이렇게 다른 서비스와의 연합을 통해서 사용자를 식별하는 인증체계를 "Federated Identity" 라고 한다.
ex) 구글로 로그인 하기 / 페이스 북으로 로그인 하기 등등 이런것들이 이러한 기술을 이용한것.

📍Oauth 를 이용하는 목적!!! = API 를 제어하는것📍
오늘날 많은 api가 restful 방식으로 설계되고 있다. 또 api를 통해 주고 받는 데이터는
restful, json, xml 형태로 이뤄지고 있다.

이렇게 OAuth 라는 인증 시스템의 원리에 대해 정리해 보았다.

profile
꾸준함을 이기는것은 없다

0개의 댓글