IT 지식

OAuth 개념 및 동작방식 이해하기

yangjoy 2021. 10. 30. 15:36

1 OAuth 란?


다른 서비스의 회원 정보를 안전하게 사용하기 위한 방법

 

고객이 자신의 네이버 아이디/비밀번호를 우리 서비스에 알려주지 않아도,

네이버에 있는 고객의 정보를 우리의 서비스에서 안전하게 사용하기 위한 방법.

 

2 OAuth 참여자


💻 Resouce server(Facebook, Google, Twitter 등)

Client가 제어하고자 하는 자원을 보유하고 있는 서버.

 

👤 Resource owner(자원의 소유자)

Client가 제공하는 서비스를 통해 로그인하는 실제 유저.

 

📱 Client(웹 어플리케이션)

Resource Server에 접속해서 정보를 가져오고자 하는 클라이언트.

 

 

3 OAuth Flow


등록(Resgister)

Client가 Resource Server를 이용하기 위해서는 자신의 서비스를 등록함으로써 사전 승인을 받아야 한다.

등록 절차를 통해 세 가지 정보를 부여받는다.

📌 Client ID

- 클라이언트 웹 어플리케이션을 구별할 수 있는 식별자이며, 노출이 무방하다.

 

🔑 Client Secret

- Client ID에 대한 비밀키로서, 절대 노출해서는 안된다.

 

🧵 Authorized redirect URL

- Authorization Code를 전달받을 리다이렉트 주소.

 

 

 

Resource Owner 승인

 

Resource Owner는 Resource Server에 접속하여 로그인을 수행한다. 

로그인이 완료되면 Resource Server는 Query String으로 넘어온 파라미터들을 통해 Client를 검사한다.

검증이 마무리되면 Resource Server는 Resource Owner에게 다음과 같은 질의를 보낸다.

 

명시한 scope에 해당하는 권한을 Client에게 정말로 부여할 것인가?

 

허용한다면 최종적으로 Resource Owner가 Resource Server에게 Client의 접근을 승인하게 된다.

 

 

Resource Server 승인

Resource Owner의 승인이 마무리 되면 명시된 Redirect URL로 클라이언트를 리다이렉트 시킨다.

이때 Reosource Server는 Client가 자신의 자원을 사용할 수 있는 Access Token을 발급하기 전에

임시 암호인 Authorization Code를 함께 발급한다.

 

그리고 유효한 요청이 확인되면 Access Token을 발급한다.

 

 

authorization code

 

 

API(Application Programming Interface) 호출

AccessToken을 활용해 Resource Server의 데이터를 사용할 수 있는데 

Resource server가 client들에게 자신들의 데이터를 사용할 수 있는 방법, 방식을 API라고 부른다.

 

즉 Resource Server를 호출하는 조작장치를 API라고 하는 것.

 

Access Token을 헤더에 담아 API를 호출하면, 해당 계정과 연동된 Resource Server의 풍부한 자원 및 기능들을

내가 만든 웹 어플리케이션에서 사용할 수 있다.

 

 

Refresh token

Access Token은 수명이 있는데 수명이 끝나면 더이상 API 접속했을 때 데이터를 주지 않는다.

그래서 손쉽게 발급받을 수 있는 방법인 refresh token이 있다.

리프레싱 방법은 모두 다르기때문에 사용방법에서 확인해야 한다.

 

추가로 공부하면 좋은 것.

restful, json, xml

 

Reference

 

OAuth 개념 및 동작 방식 이해하기

1. OAuth란? image 웹 서핑을 하다 보면 Google과 Facebook 및 Twitter…

tecoble.techcourse.co.kr

 

 

WEB2 - OAuth 2.0 - 생활코딩

수업소개 사용자가 가입된 서비스의 API에 접근하기 위해서는 사용자로부터 권한을 위임 받아야 합니다. 이 때 사용자의 패스워드 없이도 권한을 위임 받을 수 있는 방법이 필요합니다. 이를 위

opentutorials.org

 

'IT 지식' 카테고리의 다른 글

SEO란? (html 문서를 시맨틱 태그로 작성해야하는 이유)  (0) 2021.09.19
[IT 용어 정리] 비즈니스 로직이란?  (0) 2021.09.14
Git 이란?  (0) 2021.08.16
Babel이란 ?  (0) 2021.07.02