OAuth2.0 인트로

2024. 10. 15. 22:37· Backend/인증, 인가
목차
  1. 필요 상황
  2. 문제
  3. OAuth의 등장
  4. OAuth의 과정
  5. 참고자료

 OAuth는 이전에 몇 번 사용해보았는데, 말로 꺼내어 설명하기가 어려웠다. 이번 기회에 정리를 해보려 한다.

 

이번 포스팅에서는 간단한 소개로 진행할 것이다.

 

 

필요 상황

우선 세 명의 참여자가 있다고 생각해보자. (캠퍼가 만든 서비스, 사용자, 구글)

 

캠퍼가 만든 서비스가 있고, 거기서 구글에 연동하려고 한다. 구글에 접근하려면 어떻게 해야할까?

가장 쉬운 방법은 구글의 사용자 id와 비번이 있으면 된다.!

 

 

문제

1. 사용자 입장에서는 캠퍼의 서비스에 맡겨야 한다 (얘네들 주니어 개발자인데 맡길 수 있나? 이 서비스에서 유출되면 다 털리는데)

2. 캠퍼의 서비스도 구글의 아이디 비번을 관리하는 것은 매우 큰 부담이다. (털리면 책임져야함)

3. 구글도 자신 아이디 비번을 신뢰하지 않는 캠퍼의 서비스가 가지는게 곤란하다. (구글은 믿을만하니깐..)

 

 

OAuth의 등장

이런 문제를 해결하기 위해 OAuth 가 등장한다. OAuth의 등장으로 어떻게 변했을까?

 

 결론부터 말하면, OAuth를 통해 구글이 accessToken을 발급하게 된다.

 캠퍼의 서비스에서 ID와 비밀번호가 아닌 accessToken을 가지고 구글에 접근할 수 있게 되는 것이다. 이것이 핵심 줄기니 기억해두자.

 

 이제 OAuth 개념에서, 위에서 나온 세 참여자를 아래처럼 대칭시켜볼 수 있다.

사용자 => `Resource Owner` 
구글 => `Resource Server` 
캠퍼의  서비스 => `Client` (Resource Server에 접속하기 때문에)

 

+) 

여기서 추가로 Resource Server와 함께 Authorization Server가 존재한다. 

영단어 그대로 Resource Server는 데이터 전달, Authorization Server는 인증에 특화된 서버이다.

 

 

 

 

OAuth의 과정

 OAuth를 사용하기 위해서는 가장 먼저 구글, 네이버 등의 Resource Server의 개발자 페이지에서 등록 과정을 거쳐야한다. (구글에 들어가서 api 등록 , redirection URL 추가 등등) 해당 부분은 이후 다루어보도록 하겠다.

 

OAuth 2.0 인증 과정은 크게 네 단계로 이루어진다. 

1. 캠퍼 서비스가 사용자에게 인증 요청

2. 사용자가 이 요청을 승인하면, 캠퍼 서비스는 인증 서버에 코드를 요청

3. 캠퍼 서비스는 이 코드를 사용하여 인증 서버로부터 액세스 토큰을 받아옴

4. 캠퍼 서비스는 이 토큰을 사용하여 리소스 서버에 접근.

 

이 과정을 거쳐 자원에 접근할 수 있다.

 

 

참고자료

https://www.youtube.com/watch?v=XpBf7ZiT_do&list=PLuHgQVnccGMA4guyznDlykFJh28_R08Q-&index=9

https://f-lab.kr/insight/understanding-oauth-2-0

 

'Backend > 인증, 인가' 카테고리의 다른 글

[삽질 기록과 해결] Cross-Origin WebSocket에서 쿠키 전송 문제  (0) 2024.11.20
JWT(JSON Web Token)와 세션 방식을 쉽게 비교해보자  (0) 2023.05.30
  1. 필요 상황
  2. 문제
  3. OAuth의 등장
  4. OAuth의 과정
  5. 참고자료
'Backend/인증, 인가' 카테고리의 다른 글
  • [삽질 기록과 해결] Cross-Origin WebSocket에서 쿠키 전송 문제
  • JWT(JSON Web Token)와 세션 방식을 쉽게 비교해보자
동구름이
동구름이
동구름동구름이 님의 블로그입니다.
동구름이
동구름
동구름이
전체
오늘
어제
  • 분류 전체보기 (178)
    • Java (63)
      • Java 를 파헤쳐보자 (13)
      • BOJ (45)
      • 프로그래머스 (3)
      • SWEA (1)
      • Java GUI (1)
    • JavaScript (17)
      • JS를 파헤쳐보자 (7)
      • 프로그래머스 (7)
      • JS 학습 정리 (1)
    • Backend (33)
      • Spring (3)
      • HTTP (7)
      • 프로젝트 (10)
      • MySQL (6)
      • Redis (3)
      • Elastic Search (1)
      • 인증, 인가 (3)
    • CS (57)
      • 운영체제 (35)
      • Network (22)
    • Git (2)
    • 개발 관련 이것저것 (2)
    • etc (1)
    • 독서 (0)
    • 사설 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 스택
  • 프로그래머스
  • 구현
  • 모든 개발자를 위한 HTTP 웹 기본 지식
  • 자바스크립트
  • 큐
  • 자바
  • 네트워크
  • 이석복
  • JCF
  • BOJ
  • OS
  • 김영한
  • 백준
  • 한양대
  • Java
  • 반효경
  • 운영체제
  • 레디스
  • 인프런

최근 글

hELLO · Designed By 정상우.v4.2.2
동구름이
OAuth2.0 인트로
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.