[OAuth] OAuth란? 🤔

2025. 3. 4. 23:58·Dev

 

소셜로그인, 즉 구글, 카카오톡, 페이스북 같은 계정으로 한 방에 로그인 되는 그 기술이 바로 OAuth이다.
근데 단순히 이게 로그인만 도와주는 게 아니라, 앱들이 사용자 정보를 안전하게 주고받을 수 있도록 도와주는 프로토콜이라는 것이다!
이 OAuth가 뭔지, 어떻게 동작하는지 간단하게 정리해보았다.

 

🎯 OAuth의 기본 개념

OAuth는 쉽게 말해서 내 비밀번호를 안 주고도, 다른 서비스가 내 정보를 사용할 수 있게 해주는 시스템이다.

 

예전 방식이라면 앱에 내 구글 계정 아이디랑 비밀번호를 줘야했는데, 이렇게 되면 보안이 완전 구멍이다.
OAuth는 이런 문제를 해결하기 위해 토큰이란걸 사용한다.
즉, 앱이 내 비밀번호를 몰라도, 구글이 준 사용 권한이 담긴 토큰만 있으면 필요한 정보에 접근할 수 있다.
핵심은? 🛡️토큰만 있으면, 비밀번호 없이도 안전하게 인증할 수 있다!!🛡️

 

🏃‍♂️ OAuth 등장인물

  1. 리소스 소유자 (Resource Owner) 🧑‍💻
    : 쉽게 말해서, 사용자이다. 내 데이터를 제공할지 결정하는 사람. 바로 나
  2. 클라이언트 (Client) 📱
    : 내 데이터를 사용하려는 앱. 예를 들어, 내 구글 캘린더 데이터를 가져오려는 TO-DO List앱 같은거
  3. 인증 서버 (Authorization Server) 🔐
    : 사용자의 인증을 담당하는 곳. "진짜 이사람 본인 맞아?"를 확인 하는 곳
  4. 리소스 서버 (Resource Server) 📂
    : 실제 데이터를 가지고 있는 서버. 예를 들어, 내 구글 캘린더 데이터가 저장된 서버

 

⚙️ OAuth 동작 원리

  1. 사용자가 앱(Client)에서 로그인 요청
    : 어떤 일정 관리 앱에서 구글 계정으로 로그인 버튼을 누른다.
  2. 앱이 인증 서버에 권한 요청
    : 일정 관리 앱이 구글의 인증 서버에 이 사용자의 일정 정보를 가져와도 될까요?라고 요청한다.
  3. 사용자가 권한을 승인
    : 구글이 사용자에게 이 앱이 일정 정보를 가져와도 돼?라고 물어본다. 그럼 사용자는 허용을 누른다.
  4. 인증 서버가 액세스 토큰을 발급
    : 사용자가 허용하면, 구글은 앱에게 액세스 토큰을 발급해 준다.
  5. 앱이 리소스 서버에서 데이터 요청
    : 앱은 받은 토큰을 이용해서 구글 캘린더 서버에 토큰 들고 왔어요! 일정 정보 주세요!라고 요청한다.
  6. 리소스 서버가 데이터 제공
    : 토큰이 유효하면, 구글 캘린더 서버는 일정 데이터를 앱에게 보내준다.

그럼 이제 일정 관리 앱은 내 구글 캘린더 데이터를 활용할 수 있게 된다.

 

⚖️ OAuth의 장점과 단점

장점

✔️ 비밀번호를 직접 제공하지 않아, 보안이 강화된다.
✔️ 하나의 계정으로 여러 서비스를 쉽게 이용할 수 있다.
✔️ 특정 권한만 부여할 수 있어 안전하다 (예: 내 이메일은 안 주고, 캘린더 정보만 제공)

 

단점

✔️ OAuth를 구현하려면 서버 간 통신이 필요해서 복잡하다.
✔️ 토큰이 탈취되면 보안 위험이 발생할 수 있다. (그래서 토큰 유효 기간이 있다.)
✔️ 서비스마다 OAuth 구현 방식이 미묘하게 다를 수 있다.

 

 

참조

Spring Security + JWT를 이용한 자체 Login & OAuth2 Login(구글, 네이버, 카카오) API 구현(5) - OAuth란? / OAuth 2.0 인증 과정 예시

[OAuth 2.0] 란 무엇일까?

'Dev' 카테고리의 다른 글

직접 써본 FSD (Feature-Sliced Design) 적용기: 깔끔함과 혼란 사이  (0) 2025.04.05
[OAuth] OAuth 2.0을 파헤쳐보자 🔍 + 소셜로그인 예제  (0) 2025.03.05
[OAuth] GCP (Google Cloud Platform)에서 Client ID 생성하기 🪪  (0) 2025.03.05
React+MapBox Geojson 올리기 (Height 속성 활용하기 )  (0) 2025.03.04
React+Mapbox 초기 세팅 🌍  (0) 2025.03.04
'Dev' 카테고리의 다른 글
  • [OAuth] OAuth 2.0을 파헤쳐보자 🔍 + 소셜로그인 예제
  • [OAuth] GCP (Google Cloud Platform)에서 Client ID 생성하기 🪪
  • React+MapBox Geojson 올리기 (Height 속성 활용하기 )
  • React+Mapbox 초기 세팅 🌍
Lucy96
Lucy96
개발새발 프론트엔드 개발자
  • Lucy96
    Lucy dev ✨
    Lucy96
  • 전체
    오늘
    어제
    • 분류 전체보기 (18)
      • JavaScript (3)
      • React (1)
      • HTTP (1)
      • GIS (1)
      • 회고 (3)
      • Dev (7)
      • CSS (1)
      • DB (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    Google Cloud Platform
    oauth
    BEM
    scss
    토스모닥불
    논블로킹
    JavaScript
    cliend id
    OAuth 2.0
    블로킹
    webapis
    자바스크립트엔진
    콜백큐
    Cookie
    scope
    react
    localStorage
    HTTP
    프론트엔드
    cors
    토스
    sessionStorage
    gcp
    회고
    Mapbox
    CSS
    geojson
    소셜로그인
    Hoisting
    이벤트루프
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Lucy96
[OAuth] OAuth란? 🤔
상단으로

티스토리툴바