OAuth 사용하기(3. API 호출 & Refresh Token)

Walker·2021년 5월 7일
0

OAuth

목록 보기
4/4
post-thumbnail

자 이제 발급받은 Access Token을 가지고 API를 사용해보자~!
(https://opentutorials.org/module/3668/22009 - API에 대한 설명은 강의 초반 참조)

수업에서는 Google Calendar API 사용을 예시로 든다.
(이미지로 보자면 TOP HIKE(Client)라는 앱에서 등반 일정을 등록하면
그 일정 정보가 Google Calendar(Server)에도 등록되는 방식의 API 사용 방식을 의미한다.)

Google에서는 자신들의 API를 활용하는 방식으로 위와 같은 URI들을 제공하고 있다.
(API 서비스 URI : https://www.googleapis.com/calendar/v3)
(세부 서비스 URI : + EX) /users/me/calendarList)
(예시 미인증 URI : https://www.googleapis.com/calendar/v3/users/me/calendarList)

Access Token이 없기 때문에 위와 같이 로그인인증이 필요하다는 응답이 돌아온다.
Access Token을 발급 받는 방식은 각 API마다 다르므로

https://opentutorials.org/course/3424 (Google 로그인)
https://opentutorials.org/course/3423 (Facebook 로그인)
https://opentutorials.org/course/2473/16571 (Google API 연동 예시)

등의 강의를 통해 참고하면 좋을 것 같다. (UI는 좀 다를 수 있지만 흐름은 비슷할 듯)

Google의 예로 다시 돌아오자면 API를 호출하는 방식은 크게 2가지이다.
추천되는 것은 2번째 방식이다.

  1. Access Token을 Query 파라미터로 보내는 것(다른 API는 제공 안하는 경우도 있음)
  2. Access Token을 Header에 담아 Bearer 타입으로 보내는 것(추천!)

1번째 방식은 흔히 사용하는 물음표 뒤에 원하는 Query
Key(access_token), Value(발급 받은 Access Token) 형식으로 보내는 것이다.

위와 같이 URL을 요청하면
(예시라 그렇지 Access Token을 위처럼 공개해서는 안된다.)

결과적으로 해당하는 User해당 Service 정보들을 응답으로 받아온다.

Bearer 타입의 Header로 요청하기 위해서는 URL 입력만으로 안되기 때문에
Curl이나 PostMan과 같은 API 호출 도구를 활용해야 하는데
간단한 호출은 Curl(CLI)이 내용이 많으면 PostMan(GUI)가 적당 할 것 같다.

  • Curl 설치 포스팅(https://ilhee.tistory.com/25)
    (그런데 Windows PowerShell에서는 설치 안했는데 동작한다.
    전에 설치했던가? 기본 내장인가?
    Command 창에 curl을 입력해보고 동작하지 않으면 설치하는 것을 추천한다.)

Curl에서 Header 정보를 줄 때는 위와 같이 -H 옵션을 주면 된다.

요청하는 URL은 위와 같고 결과는 Query 파라미터 방식과 같지만
표준화된 방식이고 좀 더 안전한 방식이기 때문에
Bearer를 활용하는 방식이 추천된다.

Access Token을 활용한 API 활용은 여기까지로 마무리하고
번외로 Refresh Token에 대한 내용을 알아보자.


Refresh Token은 간단히 말하자면
만료된 Access Token을 갱신하는 것에 필요한 Token이다.

우리는 Access Token을 발급 받을 때 Refresh Token을 함께 발급 받는다.
(갱신시 Access Token만 재발급하는 곳도 있고, 그냥 재인증 과정을 다시 밟기도 한다.)

발급 받은 Access Token을 사용하다 만료가 되면
Authorization Server에 Access Token 갱신을 요청하게 되고
이 과정에서 필요한 것이 Refresh Token이다.

Google의 경우 위와 같이 Refresh Token 정보를 담은 요청을 보내면
expires_in과 같은 만료 정보와 함께 Access Token을 응답 해준다.

egoing님은 수업을 만드시면서부터
이 내용들을 1번 듣고 이해할 것을 기대하지 않았다고 하신다.
(한 3번은 봐야 좀 정리가 된다...)

제일 좋은 것은 만들어보면서 체화하는 것이겠지만
이렇게 원리부터 이해하는 것이 필요한 때도 있는 것 같다.
(공식 문서 참고하실 분은 여기에 -> https://tools.ietf.org/html/rfc6749)

다음은 이러한 OAuth 사용에서 활용되는 JWT도 정리 해봐야겠다!
(참고 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-jwt#)

profile
I walk slowly, but I never walk backward. -Abraham Lincoln-

0개의 댓글