article thumbnail image
Published 2021. 11. 14. 20:32
반응형

탄생배경

유저가 접속하려는 사이트에서 사용되는 카카오, 구글 등의 기능(API)을(를) 사용하기 위해

유저의 카카오, 구글 아이디 등의 SNS 계정으로 해당 사이트에 로그인하는 것

 

SNS 는 엑세스 토큰을 발행한다.

엑세스 토큰은 전체 기능이 아니라, 일부 기능만 사용하도록 하는 토큰이다.

OAuth는 액세스 토큰을 얻어내기 위한 것이다.

 

대표적인 엑세스 기능 중에 회원 식별 기능 등이 있다.

 

구성

1. Client 가 리소스 서버에게 등록

앱 만들때 리소스 서버에 대한 구성요소: client ID/ client secrets/ Authorized redirct URLs(https:client.callback//)

클라이언트 아이디는 만들고 있는 애플리케이션 식별자 아이디, 노출해도 된다.

클라이언트 시크릿은 그것을 구별하는 식별자, 노출하면 안된다.

 

2.  리소스 오너가 승인

생활코딩

https://resource.server/?client_id=1/&scope=B,C&redirect_url=https://client/callback 

 

scope는 사용 기능(API) 범위

생활코딩
생활코딩

리소스 서버는 리소스 아이디 확인하고, 리다이렉트 URL이 맞는지도 확인한다.

그다음 스코프에 따른 기능을 허용할 것인지 리소스 오너에게 확인 반응을 보낸다

반응을 하면, 리소스 서버는 유저아이디 1이 스코프 b,c를 허용했다는 정보를 저장

 

 

 

3. 리소스 서버가 승인

리소스서버는 승인하기 위해, 엑세스 토큰을 바로 발급 안함

리소스 서버는 authorization code를 유저 아이디와 저장함

authorization code는 임시 비밀번호로 리소스오너에게 줌(https://client/callback?code=3)

리소스오너는 임시 비밀번호와 함께 클라이언트에 접속 (https://client/callback?code=3)

code=3은 임시비밀번호로 클라이언트에 접속할때 필요

생활코딩

이젠 저 위에 주소로 클라이언트는 리소스 오너를 통하지  않고, 

authorization code와 client_secret을 이용해서 리소스 서버에 바로 접속

리소스 서버는 클라이언트 아이디에 따른 클라이언트 시크릿과 authorization code와 리다이렉트 Url을 확인하고, 다음 단계 진행

 

엑세스  토큰

Oauth의 목적은 엑세스 토큰을 받는 것이다

리소스 서버는 인증 후, authorization code는 지워 버린다

(이유는 다시 인증할 필요가 없으니)

다음, 리소스 서버는  엑세스 토큰을 클라이언트에게 준다.

생활코딩

유저아이디 1에 관한 사람에게 기능 b,c를 할 수 있는 엑세스 토큰을 전달한다.

 

API 호출 방법

생활코딩

 

? 이전까지는 API 호출 주소

그다음 access_token으로 기능을 불러옴

호출 이미지

생활코딩

 

 

 

반응형

'Web > 웹운영' 카테고리의 다른 글

ngrok) 쉽게 로컬호스트 공유하기  (0) 2022.03.11
Search) 검색에서 특수문자 query 문제와 base64  (0) 2022.02.03
JWT 설계  (0) 2021.12.15
JWT 인증  (0) 2021.11.10
복사했습니다!