카테고리 없음

[OAUTH] 생활코딩 강의 내용 정리

kimphoby 2024. 2. 29. 21:43

(블로그 작성시 사용한 사진은 모두 https://opentutorials.org/course/3405 생활코딩 oauth 강의에서 캡쳐한 내용입니다. )

 

OAUTH 란? 

나의 서비스에서 유저가 google, kakao, facebook등 다른 서비스에 접근하여 이용하고자 할 때 사용하는 방식. 
서비스에 대한 이용 뿐만 아니라, 다른 서비스를 통해 유저를 식별할 수 있음 (federated Identity)

 

access token을 발급받으면 이용하고자하는 기능을 이용하거나 유저에 대한 정보를 얻을 수 있다.

따라서 중요한 것은, Access Token 발급이다~

 

용어

Client _ 유저에 대한 자원을 대여하고자 하는 우리의 서비스 
Resource Owner Resouce Server에 회원가입이 되어있는, Client 서비스가 필요로 하는 자원을 가지고 있는 user 당사자

Resource Server _ 유저가 회원가입을 한 제 3의 서비스로, 유리가 제어하고자 하는 자원을 가지고 있는 서버. (Authorization server를 포함함.)

 

 

등록

Client ID _ client 식별값

Client Secret _ 무조건 open source 상에서 공개되어서는 안됨. 보안이슈 

Authorized redirect urls _ Authorized code를 부여 받는 주소 

 

Resouce Owner(user) 의 승인._ user에게 제3의 서비스에 대한 기능의 이용에 대한 승인을 받는 과정

login with google, login with facebook, login with kakao와 같은 링크를 통해 유저가  Resource Server에 로그인을 시도하면 ,

user는 위와 같이 client id, 사용하고자하는 기능의  scope, redirect 주소가 포함된 url을 통해 login을 시도하게 됨.
user가 로그인을 하게 되면, resource server는 client의 요청속에 포함된 Url 정보와 가지고 있던 등록 정보를 비교하야 확인한 후, 일치하면 user에게 해당 scope에 대한 접근을 허용하는지를 묻고 유저의 승인을 받음. 

 

 

Resource Server의 승인

 

유저의 승인을 받았다고 해서 끝이 아님.  Resource Server의 승인까지 받아야함. 
이때 이용되는 것이 임시 인증 코드인 Authorization code

user의 승인이 끝나면 Resource Server는 url에 인증 코드를 담아  브라우저(user)에게 리다이렉트 시킴 그럼 유저는 쥐도 새도 모르게 리다이렉트 주소로 이동하게 되는겨.  

 

그럼 리다이렉트된 url을 통해 client는 인증 코드를 발급 받게 되는 것이고 이 코드를 다시 resource server에게 url 형식으로 담아 user를 거치지 않고 직접적으로 접속하게 됨. 이때 url에는 인증 코드 뿐만 아니라 client id, client secret, authorization code가 담기게 됨.

 

액세스 토큰 발급

 

 

 

이제 authorization code는 필요 없으니 지워버리고, 

resource serverrk accessToken을 direct로 발급 해줌, 어떤 유저에게 어느 기능을 제공할지에 대한 정보를 람고 있음

 

API 

 

Resource Server의 API 를 호출해주고 싶으면 헤더에 Bearer + accessToken 넣어서 요청하면 됨~
이건 각각의 서버 공식 문서 참조하기

 

Refresh Token 

accessToken 만료되면 refreshToken 이용해서 새롭게 발급받음.